2013-10-31 66 views
3

我正在運行Node.js 0.10.21。我嘗試了兩種CoffeeScript 1.6.3,並且都使用和不使用require('coffee-script/extensions')。將這兩個文件編譯爲JavaScript並直接在Node中運行它們當然很好。不能要求本地的CoffeeScript模塊

# ./folder/a.coffee 
require('../b').test() 

# ./b.coffee 
exports.test = -> console.log 'yay' 

# $ coffee folder/a.coffee 
# 
# Error: Cannot find module '../b' 
# at Function.Module._resolveFilename (module.js:338:15) 
# at Function.Module._load (module.js:280:25) 
# at Module.require (module.js:364:17) 
# at require (module.js:380:17) 
# at Object.<anonymous> (/Users/test/folder/a.coffee:1:1) 
# at Module._compile (module.js:456:26) 
+0

嘗試的Node.js 0.8.26爲好。同樣的結果。 – superlukas

回答

13

我發現這個問題,而試圖解決這個問題CoffeeScript 版本1.7.1。它不適用於OP的1.6.3版本,但它可能會在2014年及以後幫助其他人解決這個問題。

的解決方案是:

var foo = require('coffee-script/register'); 
foo.register(); 

或者,你可以簡單地做到這一點(這是我一貫的偏好):

require('coffee-script/register'); 

發生了什麼事是,CoffeeScript的1.7,a breaking change was introduced

它解決了在可能正在加載的一組依賴項中使用了各種咖啡腳本版本或您的依賴項正在加載的情況。

這個想法是任何特定的模塊(或子模塊)應該能夠通過它兼容的咖啡腳本的版本進行編譯。

閱讀關於此處:https://github.com/jashkenas/coffee-script/pull/3279

1

在我的計算機上重新創建coffee folder/a.coffee工作得很好。

我認爲,加入「./」在在文件a.coffee的要求一開始可能會有幫助:

​​

你也可以嘗試以要求絕對路徑的文件,只是爲了檢查他們可以訪問。

+0

不,''/'不起作用。我認爲你使用的是CoffeeScript 1.6.3?你介意分享你使用的Node版本嗎? – superlukas

+0

節點:v0.10.21,咖啡腳本:1.6.3 –

0

brew reinstall node訣竅。不知道爲什麼。

0

您不需要重新安裝節點。只需添加咖啡腳本作爲一個依賴

npm install --save-dev coffee-script 
node -v # v0.10.31 
0

當心的路徑,他們相對於腳本,你正在運行,而不是當前文件夾。 所以,如果你運行

coffee folder/a.coffee 

和你的模塊在文件夾中,需要導入./b.coffee./folder/b.coffee