2014-10-11 38 views
12

我有一个node-webkit项目,其中包含main.js。在最高层,我有Node.js不能在同一目录中需要.js文件

var updater = require("./updater.js"); 

,我有一个在同一目录下命名为updater.js文件main.js。当我运行应用程序,我得到的错误

Uncaught Error: Cannot find module './updater.js' 

updater.js中有一行:

module.exports = "Hello!"; 

我不知道为什么就不能要求文件。我看到另一个项目做同样的事情。我可以require正常npm模块从相同的main.js罚款。

+0

您是否拥有'updater.js'的读取权限? – LotusH 2014-10-11 05:52:06

+0

你是如何启动节点的?您是否通过输入'node main.js'直接在此目录中启动节点?如果你使用了一些助手,'cwd'可能已经改变了。 – LotusH 2014-10-11 05:54:57

+0

你在'main.js'所在的目录中使用'node main',当它抛出这个错误,或者你在'main.js'中作为一个模块加载到另一个脚本中吗? – 2014-10-11 06:05:19

回答

16

这是因为,当您使用node-webkit运行app(main.js)时,根(工作)目录是index.html所在的位置,因此'./'指向的目录不是你请求该文件的模块从在

您可以通过使用resolve method in 'path' node module轻松解决这个问题,并提供了从它的需要方法的输出,你的工作文件

只要做到以下几点:

var path = require('path'); 
var updater = require(path.resolve(__dirname, "./updater.js")); 

编辑:globa上的信息l节点对象'__dirname'(和其他)可以通过找到here

+0

加1以链接到文档 – SeanRamzan 2017-05-21 00:28:11