我有这个目录结构:
project/
mymodule.js
test/
run.js
node_modules/
canvas/
我有这样的代码:
run.js
var Canvas = require(__dirname+"/../mymodule");
mymodule.js
if (typeof require==='function' && typeof module==='object'){
// when using mymodule with Node the 'canvas' module must be available
var canvas = require('canvas');
module.exports = canvas;
} else {
// code that works in a web browser, without Node
}
node test/run.js
的结果是Error: Cannot find module 'canvas'
。
我如何才能使require
来自mymodule
知道相对于原始脚本?或者这与Node模块的工作方式相反?我必须从canvas
目录中移动test
(仅用于我的测试)吗?
答案 0 :(得分:0)
如果未在require语句中放置路径,则会假定您正在尝试加载模块。如果要在代码中加载某些内容,请确保包含相对路径或绝对路径。在你的情况下:
var canvas = require('./test/node_modules/canvas');
另一种方法是将node_modules目录放在root中,而不是Web可访问的。
project/
mymodule.js
node_modules/
canvas/
test/
run.js
然后在你的run.js或mymodule.js中,你可以require('canvas')
正如你所期望的那样。