Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要具有绝对路径的本地节点模块';我不能在Windows上工作_Javascript_Node.js - Fatal编程技术网

Javascript 需要具有绝对路径的本地节点模块';我不能在Windows上工作

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。 由此产生的错误是: 错误:找不到模块“/

我正在开发一个包含几个模块的节点应用程序。 我的节点应用程序通过Babel传输到
/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模块
  • 安装一些模块:

    npm安装应用程序模块路径--保存

    在app.js中,在任何require()调用之前:

    require('app-module-path')。addPath(\uu dirname+'/app');

    在您的very/far/away/module.js中:

    var-Article=require('models/Article');

  • Linux,在项目根目录中创建app.sh:

     #!/bin/sh
     NODE_PATH=. node app.js
    
     @echo off
     cmd.exe /C "set NODE_PATH=.&& node app.js"
    
    Windows,在项目根目录中创建app.bat:

     #!/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上可以正常工作。