NPM:错误:找不到模块“平衡匹配”

时间:2018-11-23 12:42:52

标签: node.js npm

我刚刚使用nvm更新了节点和npm。当我启动节点服务器时,出现此错误。我尝试了不同的解决方案。此类问题已在堆栈溢出中存在,但这些问题都不适合我。所以我尝试了这些事情,但没有用。

1。删除节点模块,并使用npm install安装节点模块。
2.更新了babel-cli版本。
3.降级的节点和nvm。
4.npm我是平衡比赛。
5.npm i -g平衡比赛。
6.npm我保持平衡-保存。

我正在添加我的package.json

{
    "name": "******",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
         "start": "nodemon express-server.js --exec babel-node",
         "build": "babel ./ -d dist",
         "serve": "node dist/index.js"
    },
    "author": "",
    "license": "ISC",
    "dependencies": {
          "babel": "^6.23.0",
          "bluebird": "^3.5.1",
          "cookie-parser": "^1.4.3",
          "cors": "^2.8.4",
          "ejs": "^2.6.1",
          "express": "^4.16.3",
          "express-es6-template-engine": "^2.0.3",
          "express-session": "^1.15.6",
          "handlebars": "^4.0.11",
          "helmet": "^3.13.0",
          "html": "^1.0.0",
          "instamojo-nodejs": "0.0.5",
          "jsonwebtoken": "^8.2.2",
          "lodash": "^4.17.10",
          "moment": "^2.22.2",
          "mongoose": "^5.1.3",
          "mongoose-unique-validator": "^2.0.1",
          "multer": "^1.3.0",
          "mysql": "^2.15.0",
          "node-fetch": "^2.1.2",
          "node-schedule": "^1.3.0",
          "node-xlsx": "^0.12.1",
          "nodemailer": "^4.6.8",
          "passport": "^0.4.0",
          "passport-google-oauth20": "^1.0.0",
          "passport-local": "^1.0.0",
          "request": "^2.88.0",
          "request-ip": "^2.0.2",
          "sanitize-html": "^1.18.2",
          "utf8": "^3.0.0",
          "validator": "^10.2.0",
          "xlsx2json": "^1.0.0"
    },
    "devDependencies": {
         "babel-cli": "^6.26.0",
         "babel-preset-es2015": "^6.24.1",
         "babel-preset-stage-2": "^6.24.1",
         "nodemon": "^1.17.5"
    }
  }

在控制台中,它显示如下。 console error

我只浪费了12个小时的时间来解决这个问题。

3 个答案:

答案 0 :(得分:1)

我通过在根文件夹中安装npm installbalanced-match解决了此问题。我不知道为什么要使用根文件夹节点模块。在控制台错误中,显然给出了路径,但我没有意识到。如果有人解释为什么采用根节点模块会对我有帮助。

答案 1 :(得分:0)

我没有看到任何节点程序包为平衡匹配。因此,它给出了错误。您还可以在package.json中手动添加软件包,然后运行npm install。

答案 2 :(得分:0)

如果您运行以下命令:npm i balanced-match --save,则package.json文件中将有一个条目。您的应用程序需要此模块进行生产还是开发工具?这将确定您应将哪个标志传递给install命令。从docs

  

-P,-save-prod:软件包将出现在您的依赖项中。除非存在-D或-O,否则这是默认设置。

     

-D,-save-dev:软件包将出现在您的devDependencies中。

     

-O,--save-optional:程序包将出现在您的optionalDependencies中。

     

-不保存:防止保存到依赖项。

     

使用上述任何选项将依赖项保存到您的   package.json,还有两个附加的可选标志:

     

-E,--save-exact:保存的依赖项将配置为确切的版本,而不是使用npm的默认semver range运算符。

     

-B,-save-bundle:保存的依赖项也将添加到bundleDependencies列表中。

上一个答案确实最有可能解决您的问题。您可以为您的用例使用正确的标志再次运行install命令(这将安装它并更新package.json),也可以手动添加它并再次运行npm install

安装时,是否有任何错误?如果没有,它应该可以工作。您可以使用npm ls检查已安装的软件包(传递可选标签(例如'-g'将显示所有全局安装的模块,并且您还可以通过传递深度标签,如--depth=0来修改输出)。