解决与Node.js相关的模块崩溃的方法是什么?

时间:2019-10-10 14:35:23

标签: javascript node.js

我的Node.js应用之前运行良好。我将该Node.js应用程序搁置了几个月,然后返回以继续在新计算机上进行开发。错误发生!!! 错误信息如下:

fs.js:27
const { Math, Object } = primordials;
                         ^

ReferenceError: primordials is not defined
    at fs.js:27:26
    at req_ (/Users/xiaoningchang/Documents/Code/udfinder/avdetector/node_modules/natives/index.js:143:24)
    at Object.req [as require] (/Users/xiaoningchang/Documents/Code/udfinder/avdetector/node_modules/natives/index.js:55:10)
    at Object.<anonymous> (/Users/xiaoningchang/Documents/Code/udfinder/avdetector/node_modules/graceful-ncp/node_modules/graceful-fs/fs.js:1:37)
    at Module._compile (internal/modules/cjs/loader.js:936:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:947:10)
    at Module.load (internal/modules/cjs/loader.js:790:32)
    at Function.Module._load (internal/modules/cjs/loader.js:703:12)
    at Module.require (internal/modules/cjs/loader.js:830:19)
    at require (internal/modules/cjs/helpers.js:68:18)

我的package.json是:

{
  "name": "meminsight",
  "version": "0.0.1",
  "description": "JavaScript memory analyses",
  "repository": {
    "type": "git",
    "url": "https://github.com/Samsung/meminsight.git"
  },
  "dependencies": {
    "acorn": "3.1.0",
    "argparse": "0.1.15",
    "aspect-js": "^1.0.3",
    "callsites": "^2.0.0",
    "chai": "^4.1.2",
    "codemirror": "5.1.0",
    "cover": "0.2.9",
    "datatables": "^1.10.18",
    "ejs": "1.0.0",
    "escope": "1.0.1",
    "esotope": "1.4.5",
    "estraverse": "4.0.0",
    "execSync": "1.0.2",
    "expect.js": "^0.3.1",
    "express": "3.4.8",
    "fast-stats": "0.0.2",
    "finalhandler": "0.0.3",
    "graceful-ncp": "2.0.0",
    "grunt": "0.4.5",
    "jquery": "2.1.3",
    "jsonparse": "0.0.6",
    "line-by-line": "0.1.3",
    "line-reader": "^0.4.0",
    "log4js": "^2.3.11",
    "mkdirp": "0.5.0",
    "mocha": "^1.20.1",
    "multi-key-cache": "^1.0.2",
    "parse5": "2.1.5",
    "q": "1.2.0",
    "rewriting-proxy": "0.5.1",
    "rimraf": "2.2.8",
    "serve-static": "^1.14.1",
    "sloc": "^0.2.1",
    "temp": "0.8.1",
    "websocket": "^1.0.30",
    "wrench": "1.5.8"
  },
  "scripts": {
    "test": "(cat test/testSuite.txt | sed 's/^/test\\//' | xargs ./node_modules/.bin/mocha --reporter spec --harmony) && cd lifetime-analysis && ./gradlew cleanTest test && cd ..",
    "build": "grunt typescript"
  },
  "devDependencies": {
    "grunt-cli": "0.1.13",
    "grunt-exec": "^0.4.6",
    "grunt-simple-mocha": "0.4.0",
    "grunt-typescript": "^0.8.0",
    "jasmine": "^2.8.0"
  },
  "license": "Apache-2.0"
}

从属模块natives中似乎出现了问题。但是,根据package.json文件,该应用程序不依赖于natives模块。此外,primordials模块的index.js文件中没有名为natives的变量。

其他信息: Node.js版本:12.10.0; npm版本:6.11.3; 我gyp ERR! build error应用程序时也遇到了npm install的错误。我使用命令npm audit fix对其进行了修复。这与我的问题有关吗?

有人可以帮我解决这个问题吗?我是Node.js的新手,经验不足,无法自行调试代码。非常感谢。

1 个答案:

答案 0 :(得分:0)

不建议使用本机npm软件包:https://www.npmjs.com/package/natives

如果转到其页面,他们会警告说该软件包可能会在将来的节点版本中破坏-他们也强烈建议也不要首先使用该软件包。我猜这是一个不同的操作系统或节点版本。您没有在package.json中将本机列为依赖项这一事实,这意味着您至少有一个依赖项正在使用本机-或其中一种依赖项的依赖项,依此类推...-。

一种检查使用本地语言的依赖项的方法是运行:

$ npm ls natives

我在本地计算机MacOS 10中的一个项目中安装了您的依赖项,然后运行它,看来graceful-fs正在使用nativesgraceful-fsgraceful-ncp的依赖项,它在package.json中列出。

当我做$npm install时,收到了几条警告,其中之一是有关将graceful-fs升级到版本4的警告,以避免将来在升级节点版本时出错。

graceful-ncp软件包当前的版本为3.0.0,因此我将package.json中的版本升级到了3.0.0。然后$ rm -rf node_modules && npm i;

此后,$ npm ls natives产生空白,这意味着升级graceful-ncp应该可以解决您的问题-当然,您可能需要在代码中添加更改,以避免破坏graceful-ncp的更改。