我使用此link将节点版本从12升级到14.5.0(我需要使用es6类和语法,并且发现节点14支持它)。 但是,当我尝试在更新后运行我的node js应用程序时,它显示如下:
[nodemon] 2.0.4
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node app.js command`
const path = require("path");
^
ReferenceError: require is not defined
at file:///./NodeJsClient/app.js:1:14
at ModuleJob.run (internal/modules/esm/module_job.js:140:23)
at async Loader.import (internal/modules/esm/loader.js:162:24)
[nodemon] app crashed - waiting for file changes before starting...
我需要更新nodemon或npm吗?我该如何解决? 我的npm版本是6.14.5
答案 0 :(得分:3)
nodejs试图将您的app.js文件作为ESM模块文件加载,但它不是ESM模块文件-它是CommonJS模块文件。 ESM模块文件中没有require()
,这就是您收到错误的原因。
由于您的文件是CommonJS模块,因此看来似乎有一条指令告诉节点尝试将文件作为ESM模块加载。最可能的位置是在package.json文件中,您应确保具有以下位置:
type: "commonjs"
不是
type: "module"