我的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的新手,经验不足,无法自行调试代码。非常感谢。
答案 0 :(得分:0)
不建议使用本机npm软件包:https://www.npmjs.com/package/natives。
如果转到其页面,他们会警告说该软件包可能会在将来的节点版本中破坏-他们也强烈建议也不要首先使用该软件包。我猜这是一个不同的操作系统或节点版本。您没有在package.json
中将本机列为依赖项这一事实,这意味着您至少有一个依赖项正在使用本机-或其中一种依赖项的依赖项,依此类推...-。>
一种检查使用本地语言的依赖项的方法是运行:
$ npm ls natives
我在本地计算机MacOS 10中的一个项目中安装了您的依赖项,然后运行它,看来graceful-fs
正在使用natives
。 graceful-fs
是graceful-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
的更改。