我收到错误:fs.js:36 = primordials; ^ ReferenceError: 未定义原语

Posted

技术标签:

【中文标题】我收到错误:fs.js:36 = primordials; ^ ReferenceError: 未定义原语【英文标题】:I get the error: fs.js:36 = primordials; ^ ReferenceError: primordials is not defined我收到错误:fs.js:36 = primordials; ^ ReferenceError: 未定义原语 【发布时间】:2020-12-21 22:58:07 【问题描述】:

我收到以下错误,我的节点版本是:12.18 当我运行 npm start 开始我的项目时

 fs.js:36
   = primordials;
^

ReferenceError: primordials is not defined
at fs.js:36:5

有人回答 gulp 和节点 12 的问题 (How to fix ReferenceError: primordials is not defined in node)

但我没有在我的项目中使用 gulp,也没有安装 gulp。

下面是我的 package.json


    "name":"myapp",
    "version":"1.0.0",
    "description":"",
    "scripts":
        "start":"node server.js",
        "test":"echo \"Error: no test specified\" && exit 1"
    ,
    "author":"MJX",
    "license":"ISC",
    "dependencies":
        "body-parser":"^1.19.0",
        "express":"^4.17.1",
        "express-handlebars":"^2.0.1",
        "mssql":"^6.2.1",
        "mysql":"^2.18.1",
        "nodemon":"^1.19.4",
        "npm":"^5.10.0"
    ,
    "devDependencies":
        "handlebars-helper-css":"^0.1.0"
    

还有我的 server.js:

var express = require("express");
var bodyParser = require("body-parser");

var PORT = process.env.PORT || 4300;

var app = express();

app.use(express.static("public"));

app.use(bodyParser.urlencoded( extended: true ));

app.use(bodyParser.json());

var exphbs = require("express-handlebars");

app.engine("handlebars", exphbs( defaultLayout: "main" ));
app.set("view engine", "handlebars");

var routes = require("./controllers/burgersController.js");

app.use(routes);

app.listen(PORT, function() 
    console.log("App now listening at localhost:" + PORT);
);

【问题讨论】:

当我运行 npm start 时 我更新了我的问题,还添加了 server.js 详细信息 found 149 vulnerabilities (81 low, 15 moderate, 52 high, 1 critical) 不关心你吗?刚刚安装了节点 12.18.0 并使用您的确切 package.json 运行 npm install。更新你的依赖... 【参考方案1】:

如果您查看未提供的错误消息中的堆栈跟踪:

ReferenceError: primordials is not defined
    at fs.js:35:5
    at req_ (C:\Users\Patrick\Desktop\test\node_modules\natives\index.js:143:24)
    at Object.req [as require] (C:\Users\Patrick\Desktop\test\node_modules\natives\index.js:55:10)
    at Object.<anonymous> (C:\Users\Patrick\Desktop\test\node_modules\graceful-fs\fs.js:1:37)
    at Module._compile (internal/modules/cjs/loader.js:1138:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
    at Module.load (internal/modules/cjs/loader.js:986:32)
    at Function.Module._load (internal/modules/cjs/loader.js:879:14)
    at Module.require (internal/modules/cjs/loader.js:1026:19)
    at require (internal/modules/cjs/helpers.js:72:18)

您会发现错误源自natives 模块。运行npm ls natives,可以判断是express-handlebars的子依赖:

myapp@1.0.0 C:\Users\Patrick\Desktop\test
`-- express-handlebars@2.0.1
  `-- graceful-fs@3.0.12
    `-- natives@1.1.6

您的 express-handlebars 依赖关系已经过时了。将其从 ^2.0.1 更新为 ^5.1.0 可以解决您的问题,但您真的不应该忽略 audit messages 的其余部分:

found 146 vulnerabilities (80 low, 15 moderate, 51 high)
  run `npm audit fix` to fix them, or `npm audit` for details

【讨论】:

我的问题有所不同,但是在运行 npm ls graceful-fs 之后,我发现所有其他依赖于这个的包。我看到他们中的大多数都需要优雅的 fs 版本 3,但是这个版本在 win 10 上与较新的 nodejs 有问题。所以手动通过 package-lock.json 和 npm-shrinkwrap.json 并更改所需的优雅 fs 版本和然后运行 ​​npm audit fix --force 为我完成了这项工作。我已经阅读这个问题几个小时了,只有这对我有用。【参考方案2】:

在项目根文件夹中创建一个名为npm-shrinkwrap.json 的文件。

将以下代码添加到文件中:


   "dependencies": 
      "graceful-fs": 
         "version": "4.2.2"
      
   

【讨论】:

以上是关于我收到错误:fs.js:36 = primordials; ^ ReferenceError: 未定义原语的主要内容,如果未能解决你的问题,请参考以下文章

我收到错误:致命错误:索引超出范围

我收到以下错误:[GraphQL 错误]:消息:任务

我收到此错误 NSURLErrorDomain 错误 -999

为啥我收到的 jwt 格式错误?

每当我使用“require”这个词时,我都会收到一个错误,如果我尝试使用 relative_require,我也会收到一个错误

为啥我在尝试使用 fetch 连接 Api 时收到“错误请求”错误 400?