【发布时间】:2015-03-18 09:36:00
【问题描述】:
我在 NodeJS 中遇到了一个有趣的问题,该问题时不时地在工作中弹出,但我一直无法弄清楚。
我在 CoffeeScript 中编写了一个后端,然后我使用 grunt-contrib-coffee 将其编译为 ~/bin 目录中的 Javascript。我还包含一个库,我使用适当的私钥在 Bitbucket 上私人托管,并通过 npm 安装。这个库也是用 coffeescript 编写的。
通常,我可以在 Javascript 中包含这个库而不会感到头疼,就像我对任何其他库一样使用简单的 require。但是,有时使用后端的服务器之一会获得更新,并且它会停止工作。当我去检查错误时,它总是一样的——“require”通过了,但它不是在 JavaScript 中加载实际的库,而是返回一个空对象 ({})。在 coffeescript 中运行代码仍然有效,但无论我做什么——重新编译、重新安装所有依赖项、删除并克隆存储库,问题仍然存在。
我已经没有什么想法了
在库 package.json 中:
{
"name": "graph-engine",
"main": "./lib/graph"
}
在图书馆的graph.coffee中
class Graph
constructor: () ->
# Perform init
module.exports = Graph
然后在app的package.json中:
{
"graph-engine": "git+ssh://git@bitbucket.org:<team>/graph-engine.git"
}
最后,在应用本身:
GraphEngine = require "graph-engine"
engineInstance = new GraphEngine()
这在 coffeescript 中运行良好,但是在使用 grunt 编译应用程序时,grunt-contrib-coffee 的设置如下:
coffee:
glob_to_multiple:
expand: true
flatten: false
cwd: 'src'
src: ['**/*.coffee']
dest: 'bin'
ext: '.js'
运行编译后的应用程序时无法正确加载库,而是返回一个空对象。同样,我想强调这并不总是发生,因此我没有包含任何代码或 json 文件,因为我认为这是不相关的。
【问题讨论】:
-
代码在哪里?我们有 zilch 在这里继续。
标签: javascript node.js ubuntu coffeescript