首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS 'Require‘装入coffeescript中的库,Javascript中的空对象

NodeJS 'Require‘装入coffeescript中的库,Javascript中的空对象
EN

Stack Overflow用户
提问于 2015-03-18 09:36:00
回答 1查看 230关注 0票数 0

我在NodeJS中遇到了一个有趣的问题,这个问题在工作中时有发生,但我一直没能弄清楚。

我用CoffeeScript编写了一个后端,然后在~/bin目录中将其编译成Javascript。我还包括一个库,我在Bitbucket上使用适当的私钥私下托管它,并通过npm安装。这个库也是用coffeescript编写的。

通常,我可以将这个库包含在Javascript中,而不会让人头疼,使用一个简单的要求,就像对任何其他库一样。但是,偶尔会有一个使用后端的服务器得到更新,并且停止工作。当我去检查错误时,它总是相同的- 'require‘传递,但是它没有在JavaScript中加载实际的库,而是返回一个空对象({})。在coffeescript中运行代码仍然有效,但不管我做了什么-重新编译、重新安装所有依赖项、删除和克隆存储库,问题仍然存在。

我已经没有自己的想法了,所以我希望这里的人以前遇到过这个问题,也许能指出正确的方向。

在库package.json中:

代码语言:javascript
复制
{ 
    "name": "graph-engine",
    "main": "./lib/graph"
}

在图书馆的graph.coffee中

代码语言:javascript
复制
class Graph
    constructor: () ->
      # Perform init

module.exports = Graph

然后在应用程序的package.json中:

代码语言:javascript
复制
{
    "graph-engine": "git+ssh://git@bitbucket.org:<team>/graph-engine.git"
}

最后,在应用程序本身中:

代码语言:javascript
复制
GraphEngine = require "graph-engine"
engineInstance = new GraphEngine()

这在coffeescript中工作得很好,但是在使用grunt编译应用程序时,可以使用以下设置来设置咕噜-控制-咖啡:

代码语言:javascript
复制
coffee:
  glob_to_multiple: 
    expand: true
    flatten: false
    cwd: 'src'
    src: ['**/*.coffee']
    dest: 'bin'
    ext: '.js'

在运行编译后的应用程序时,它无法正确加载库,而是返回一个空对象。再次,我想强调的是,这种情况并不总是发生,因此我不包括任何代码或json文件,因为我认为它是不相关的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-20 19:13:30

虽然这种行为的随机性的确切原因至今还没有解决,但我发现它与用CoffeeScript编写的这些库有关。

根据加载顺序,有时第三方库会注册咖啡脚本,而我自己的库将正确加载,而其他时候,这些库将在加载自己的库之后加载,从而导致无法加载coffeescript。因此,这个解决方案非常简单--注册coffeescript。这可以通过在node.js应用程序的开头放置以下内容来完成:

代码语言:javascript
复制
require('coffee-script/register')

有关更多信息,请参考文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29118455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档