Node.js模块.js: 340错误:找不到模块。

43
我在C:\Program Files (x86)\nodejs中安装了Node.js,然后我创建了一个.js文件并将其保存在桌面上,只是为了在控制台输出“hello world”。
console.log('hello world');

当我尝试从命令提示符运行该文件时:

C:\Users\Laura>cd desktop
C:\Users\Laura\Desktop>node nodeTest.js

我得到:

module.js:340
throw err;
      ^
Error: Cannot find module 'C:\Users\Laura\Desktop\testNode.js'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:901:3

我阅读了许多其他相关的问题,其中一些建议运行安装程序,于是我就这样做了。

C:\Users\Laura>npm install -g express

但是没有运气,仍然收到相同的错误消息。


2
使用npm install -g express这部分完全没有意义。 - TheHippo
2
从错误信息来看,我建议您在终端/控制台上拼写文件名有误。 - TheHippo
1
确实,一个是testNode.js,另一个是nodeTest.js? - ming_codes
1
不是的。谢谢你的提醒,但不是那个。 - Laura Martinez
3
我也遇到了同样的错误,请检查你的 JavaScript 文件扩展名,这应该可以解决你的问题。 - Prasanna Aarthi
显示剩余3条评论
22个回答

33

编辑:这个答案已经过时了。有了像Yarn和NPM 5的锁文件,现在更容易确保在Heroku等平台上正确地处理依赖关系。

我遇到了一个类似的问题,涉及到本地某种方式修改了node_modules,但更改没有在Heroku上反映出来,导致我的应用崩溃。如果这是您的问题,解决起来相对简单:

# Remove node_modules
rm -fr node_modules

# Reinstall packages
npm i

# Commit changes
git add node_modules
git commit -m 'Fix node_modules dependencies.'
git push heroku master

希望这能帮助到其他遇到类似问题的人。


9
你的答案针对所问问题是正确的。然而,在node_modules中进行检查是一个非常糟糕的主意。虽然Heroku建议这样做,但Node.js Buildpack会在部署时自动运行npm install。没有必要将不属于你的代码提交到仓库中,然后将多个原子提交/更改一起提交到你的依赖项中。 - Bailey Parker
1
我写这篇文章时,推荐的方法是对mode_modules进行版本控制,但是现在建议大家尽量避免版本控制。 - Dana Woodman
我使用了前两个命令(删除node_modules/重新安装包),效果非常好。谢谢! - Ricardo

21

我曾经遇到过与一位写了一段时间的服务器相同的问题。最后发现是因为我没有安装一些脚本所需的东西。

这个问题对我很有帮助。

最终我能够使用:

npm install yourMissingDependency 

虽然在您的情况下,它可能只是一个没有路径的文件。 您可以尝试将该文件放置在运行节点脚本的相同文件夹中。


6
我认为问题出在NODE_PATH环境变量上。我曾经遇到过同样的问题,但一旦我执行了以下操作(在Windows上):
set NODE_PATH=C:\Users\MyUser\node_modules

然后一切都正常工作。

谢谢!


3
我曾经遇到过类似的问题,原来是我的JS文件并没有在我所调用的文件夹中,而是我进入了一个过深的文件夹。我回到上一级目录,重新运行文件,它成功被识别,从此愉快地工作。
或者,如果你向上一层目录,但仍然收到相同的错误提示,只不过是关于另一个模块的,那么就把你父文件夹中的相同文件移动到之前你试图运行的子文件夹中。
简而言之,你的文件或其模块并不在你想象的文件夹中。向上一级目录即可解决。

3

重新启动命令提示符并检查您的路径变量(输入:path)。如果您无法从输出中找到nodejs安装目录,请将其添加到路径变量中,并记得重新启动cmd。


2

大家好,作为Phonegap/Cordova/Ionic开发者的同行,

  I solved this issue by doing the following

  1. C: drive -> Users -> "username" eg. john -> AppData -> Roaming

  2. Inside the "Roaming" folder you need to delete both "npm" and "npm-cache" 
       folder.

  3. Now build your project, and it should work

愉快编码!!!


2

尝试在Node命令行环境下输入以下内容:

.load c:/users/laura/desktop/nodeTest.js.

这应该可以解决你想要做的事情。

如果你想直接调用文件,那么你需要把它放在Node安装所在的根目录中。


感谢@Shmuli的评论。正如TheHippo和lightblade指出的那样,当我提交问题时,我打错了一个字。文件的实际名称是testNode.js。无论如何,我尝试了您的建议,使用了正确的文件名,但没有成功。我输入了:> .load .c:\users\laura\desktop\testNode.js 我得到了:无法加载:.c:\users\laura\desktop\testNode.js - Laura Martinez
哦,抱歉@Laura Martinez。你可以这样做:.load c:/users/laura/desktop/testNode.js。(必须在 c:/ 前面去掉句号...)我尝试了一下,它可以工作。很高兴你发现这是一个打字错误的问题...我回去改正了我的答案。 - shmuli
我仍然收到失败消息。
.load c:/users/laura/desktop/testNode.js 加载失败:c:/users/laura/desktop/testNode.js
- Laura Martinez

1

我遇到了同样的问题。我只是手动将包含测试代码的testNode.js文件复制并粘贴到nodejs目录的根目录中。我尝试了这个命令 C:\Program Files (x86)\nodejs>node testnode.js,终于成功了!我收到了这条消息。

enter image description here

然后我在浏览器中键入了此 URL,收到了消息“Hello World”。希望这能帮助某些人。


1

您需要:

  • 从Windows资源管理器文件夹选项中取消勾选“隐藏已知文件类型的扩展名”
  • 您的文件将显示为testNode.js.txt
  • 去掉末尾的.txt,使文件被解析为JS文件

就这样,现在它可以工作了!


0

从路径中删除fs extra模块-

  path: 'D:\\FrontEnd Dev\\Git projects\\Appname-master\\node_modules\\webpack-manifest-plugin\\node_modules\\fs-extra\\package.json',
  requestPath: 'fs-extra'

然后运行命令npm i


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接