尽管已安装模块,但 Node.js 找不到模块

Posted

技术标签:

【中文标题】尽管已安装模块,但 Node.js 找不到模块【英文标题】:Node.js cannot find module, despite module being installed 【发布时间】:2018-05-27 07:04:08 【问题描述】:

我在本地将我的应用程序构建到 dist 文件夹中; package.json 也被复制过来

npm install --production 在 dist 文件夹中运行

dist 文件夹然后被压缩

Zip 上传到服务器,然后解压

尝试在服务器上运行应用程序导致Error: cannot find module <module_name>

除非我在解压后手动运行npm install <module_name>,否则任何模块都会出现此错误

如果我从我的dist 文件夹运行它,一切正常,所以这不是预压缩部分的问题

解压后运行npm install --production 并不能解决任何问题(只是说所有模块都是最新的)

在服务器上删除node_modules,然后运行npm install --production 使一切正常

在本地解压缩 zip 文件然后运行应用程序可以正常工作

我错过了什么/做错了什么?

编辑:package.json:


    "name": "app-name",
    "version": "0.0.1",
    "scripts": 
        "start": "index.js"
    ,
    "dependencies": 
        "body-parser": "^1.18.2",
        "email-validator": "^1.1.1",
        "express": "^4.16.2",
        "express-jwt": "^5.3.0",
        "express-jwt-permissions": "^1.0.0",
        "firebase-admin": "^5.5.1",
        "jsonwebtoken": "^8.1.0",
        "mailgun-js": "^0.13.1",
        "mysql2": "^1.5.0",
        "password-hash-and-salt": "^0.1.4",
        "randomstring": "^1.1.5",
        "reflect-metadata": "^0.1.10",
        "sequelize": "^4.22.6",
        "sequelize-typescript": "^0.5.0"
    ,
    "devDependencies": 
        "@types/express": "^4.0.39",
        "@types/express-jwt": "0.0.38",
        "@types/jsonwebtoken": "^7.2.4",
        "@types/node": "^8.0.51",
        "@types/sequelize": "^4.0.79",
        "babel-core": "^6.26.0",
        "del": "^3.0.0",
        "gulp": "^3.9.1",
        "gulp-babel": "^7.0.0",
        "gulp-ssh": "^0.6.0",
        "gulp-typescript": "^3.2.3",
        "gulp-zip": "^4.0.0",
        "merge-stream": "^1.0.1",
        "typescript": "^2.6.1"
    

【问题讨论】:

当它说找不到模块时,它也说它正在寻找的路径。检查是否正在寻找正确的 node_modules 路径。 错误中没有路径:Error: Cannot find module 'express' at Function.Module._resolveFilename (module.js:536:15) at Function.Module._load (module.js:466:25) at Module.require (module.js:579:17) at require (internal/module.js:11:18)...etc(只有路径是试图加载 express 的文件的位置) 嗯,好的。你能检查一下expressnode_modules 文件夹中是否有node_modules 吗?也许你有一个全局安装,但不记得你是这样安装的。 也检查了,并且 express 没有全局安装(我使用的其他模块也没有) 有点奇怪,是的。我已经帮不上忙了。我投了赞成票。让我们看看其他人是否能找到发生了什么。 【参考方案1】:

使用 npm install --only=production 代替。按照这个article

希望这有帮助,我是 Node js 的新手,只是想提供帮助

【讨论】:

以上是关于尽管已安装模块,但 Node.js 找不到模块的主要内容,如果未能解决你的问题,请参考以下文章

node.js 找不到 xxx 模块解决办法

找不到模块“mysql”node.js

已安装 Node JS NPM 模块但无法识别命令

尽管安装了 Completion,但找不到模块“../lib/completion”

throw err找不到模块'node-rdkafka'

module.js:540错误:找不到模块'semver'