Node.js不能在同一目录中要求.js文件

Ant*_*shy 21 javascript node.js node-webkit

我有一个带有的node-webkit项目main.js.在最顶端,我有

var updater = require("./updater.js");
Run Code Online (Sandbox Code Playgroud)

我有一个文件名updater.js在同一目录中main.js.当我运行应用程序时,我收到错误

Uncaught Error: Cannot find module './updater.js' 
Run Code Online (Sandbox Code Playgroud)

updater.js 有一行:

module.exports = "Hello!";
Run Code Online (Sandbox Code Playgroud)

我不知道为什么它不能要求文件.我见过另一个项目做同样的事情.我可以通过相同的require常规npm模块main.js.

Dmi*_*eev 30

这是因为,当你使用node-webkit运行app(main.js)时,root(working)目录就是index.html所在的位置,所以'./'指的是那个目录而不是你的文件所在的目录从中请求模块.

您可以通过在'path'节点模块中使用resolve方法轻松解决此问题,并将其输出提供给工作文件中的require方法

只需执行以下操作:

var path = require('path');
var updater = require( path.resolve( __dirname, "./updater.js" ) );
Run Code Online (Sandbox Code Playgroud)

编辑:全局节点对象'__dirname'(和其他)的信息可以在这里找到.

  • 虽然这个解决方案确实有效,但 './'(我错过了)似乎实际上正如人们现在所期望的那样工作,并且不再需要 `path.resolve( __dirname...` (3认同)
  • 加 1 作为文档链接 (2认同)
  • 是否有一种不那么冗长的需要单个文件的方式(不需要2行,路径,路径,解析,__名称,相对路径等)? (2认同)