如何解决Nodejs:错误:ENOENT:没有这样的文件或目录

Eme*_*bah 32 mongodb node.js npm

我有一个Nodejs Web应用程序当前正在服务器上成功运行.现在我正在尝试在我的开发服务器上设置本地副本.

我目前有Nodejs,NPM和Mongo安装就像我在生产服务器中安装的那样但是当我尝试启动节点服务器时出现以下错误

什么可能导致这个问题?

embah@devsertwo:~/node/nodeapp$ node app.js
fs.js:640
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^

Error: ENOENT: no such file or directory, open '/home/embah/node/nodeapp/config/c
onfig.json'
    at Error (native)
    at Object.fs.openSync (fs.js:640:18)
    at Object.fs.readFileSync (fs.js:508:33)
    at Object.<anonymous> (/home/embah/node/nodeapp/config/config.js:4:28)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/home/embah/node/glorby/app.js:13:16)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:509:3
embah@devsertwo:~/node/nodeapp$
Run Code Online (Sandbox Code Playgroud)

Tro*_*ott 34

您的应用程序希望找到一个文件,/home/embah/node/nodeapp/config/config.json但该文件不存在(这ENOENT意味着什么).因此,您需要创建预期的目录结构,或者配置您的应用程序,使其在正确的目录中查找config.json.


小智 13

92% 额外的资产处理脚本-webpack-plugin × ?wdm?: Error: ENOENT: no such file or directory, open....==> 如果有人遇到这样的错误,你应该做以下事情:1) 你应该检查如果文件路径在 angular.json 文件中正确。

 "scripts": [
          "node_modules/jquery/dist/jquery.min.js",
          "node_modules/bootstrap/dist/js/bootstrap.js"
        ],
Run Code Online (Sandbox Code Playgroud)

2) 你应该按 crtl+c 并重新运行项目。


Niv*_*Niv 12

如果您在项目中使用 Express.js 时遇到相同的错误,这对我有用:

在我的项目中,当我运行 Express.js 应用程序时,我注意到当前工作目录是项目的根目录(当我尝试读取位于脚本目录中的文件时)。自 以来它无法运行该文件process.cwd() !== __dirname

您可以查看它并process.cwd()在控制台中登录您尝试读取 JSON 文件的脚本。

我刚刚将路径更改为:

const fs = require('fs');
fs.readFileSync(`${__dirname}\\FILENAME`);
Run Code Online (Sandbox Code Playgroud)


Ani*_*dey 10

@olleh答案有效,因为npm install它将node_modules在执行它的当前路径中创建一个目录。因此,在使用文件服务器系统模块时,下面的声明从node_modules.

const fs = require('fs')
Run Code Online (Sandbox Code Playgroud)


小智 9

在经历了如此多的链接和线程并一遍又一遍地感到沮丧之后,我开始了基础工作和繁荣!它有所帮助。我只是做了:

npm install
Run Code Online (Sandbox Code Playgroud)

我不知道,但这可能会帮助某人:)

  • 不像我的解决方案那么简单——计算机重新启动,在 c:\windows\system 中打开 powershell,我没有意识到我不在我的项目目录中! (5认同)
  • 这可能对某些人有用,但对我不起作用。 (3认同)
  • 我也遇到了同样的问题,它也对我有用。谁能解释一下为什么会这样吗?我知道 npm 正在搜索某个目录但没有找到,但为什么呢? (2认同)
  • 奇怪的是,对于全新的安装,“npm install”会导致相同的错误,但是“npm update”有效,然后后续的“npm install”也有效! (2认同)

小智 7

我通过简单地在出现错误的位置创建一个空白文件来解决此错误。如果您收到目录错误,您可以尝试创建一个空目录。


Cha*_*cke 7

在我的情况下,问题是由于使用从脚本执行的目录而不是项目的根目录开始的文件路径引起的。

我的目录结构是这样的:projectfolder/ ??? 包.json ??? 脚本文件夹/ ? ???我的脚本.js

我打电话fs.createReadStream('users.csv')而不是正确的fs.createReadStream('scriptFolder/users.csv')


Dam*_*een 6

我也遇到了这个问题,因为我打开了另一个正在运行该应用程序的控制台窗口,并且我试图yarn start在另一个控制台窗口中重新运行。

第一个Yarn的执行阻止了第二个 Yarn 的写入。所以我只是杀死了第一个进程并且它起作用了。


Ana*_*yst 6

ng-package.json我在创建插件时遇到了这个文件问题。我发现我在 中提供了错误的路径angular.json。修复了我的文件路径,问题已解决。

可能对某人有帮助。


Has*_*eem 5

就我而言,问题发生在我从 Git 分支切换到另一个分支之后,对一些旧文件的引用仍然保留在“node_modules/.cache”目录内的脚本中。

删除“node_modules”、“build”目录和“package-lock.json”文件,然后发出“npm install”命令已经解决了我的问题。


小智 5

如果没有任何布局文件夹,只需在路由中像这样使用它:

app.get('/', (req, res) => {
    res.render('something', { layout: false });
})
Run Code Online (Sandbox Code Playgroud)

在这里更改您的文件夹名称。