Javascript 需要具有绝对路径的本地节点模块';我不能在Windows上工作
我正在开发一个包含几个模块的节点应用程序。 我的节点应用程序通过Babel传输到Javascript 需要具有绝对路径的本地节点模块';我不能在Windows上工作,javascript,node.js,Javascript,Node.js,我正在开发一个包含几个模块的节点应用程序。 我的节点应用程序通过Babel传输到/dist/app 这是一个示例结构 . |- main | |- config.js | |- factories | | |- example.js 这是config.js: const ex = require("/main/factories/example"); 我使用节点dist/app/main/config.js启动config.js。 由此产生的错误是: 错误:找不到模块“/
/dist/app
这是一个示例结构
.
|- main
| |- config.js
| |- factories
| | |- example.js
这是config.js:
const ex = require("/main/factories/example");
我使用节点dist/app/main/config.js
启动config.js。
由此产生的错误是:
错误:找不到模块“/main/factories/example”
但是,当使用const ex=require(“./factories/example”);
时,它会正常工作
此问题仅在Windows上发生(测试Windows 8.1),OS X和Linux都可以
这里的问题是什么?我认为可能是
节点路径
导致了您的问题。请参阅本文。有几种方法需要本地节点模块
-
在节点_模块下创建一个符号链接到应用程序目录:
- Linux:
ln-nsf节点\模块应用程序
- Windows:
mklink/D应用程序节点\u模块
- Linux:
-
安装一些模块:
在app.js中,在任何require()调用之前:npm安装应用程序模块路径--保存
在您的very/far/away/module.js中:require('app-module-path')。addPath(\uu dirname+'/app');
var-Article=require('models/Article');
-
Linux,在项目根目录中创建app.sh:
#!/bin/sh NODE_PATH=. node app.js
Windows,在项目根目录中创建app.bat:@echo off cmd.exe /C "set NODE_PATH=.&& node app.js"
#!/bin/sh NODE_PATH=. node app.js
@echo off cmd.exe /C "set NODE_PATH=.&& node app.js"
希望它能帮助您。相反,代码在Windows上按预期工作。
/main/factories/example
表示Windows上的C:/main/factories/example
。由于某种原因,它在OSX/Linux上工作(可能设置了节点路径)。我建议不要依赖于副作用来生成工作代码,也不要使用相对路径(完全依赖于工作目录),您应该像这样构建绝对路径:
const ex = require(__dirname + "/factories/example");
你能稍微充实一下代码示例吗?到目前为止,我们所看到的并不是真正的
require
。我只是忘记了require
,相反,代码在Windows上可以正常工作。