为什么nodejs可能找不到"要求"



我在Win 10上。我有一个已经存在了几个月的VisualStudio2019项目。

> node -v
v14.15.4
Note: I was running v14.15.(something less than 4) before the issue below.
> npm -v
6.14.10
> gulp -v
CLI version: 2.3.0
Local version: 4.0.2

我有一个nodejs问题,大约一天前我才注意到。我有一个正在进行的项目,决定更新package.json文件中的依赖项。我运行了npm update,有几个包确实发生了变化。我有一个在项目生命周期内一直在工作的gulpfile,所以运行了它,但得到了

> gulp
ReferenceError: require is not defined
at file:///H:/Group_Projects/MyProject/MyProject/gulpfile.js:1:12
at ModuleJob.run (internal/modules/esm/module_job.js:152:23)
at async Loader.import (internal/modules/esm/loader.js:166:24)

gulpfile看起来像:

var gulp = require("gulp");
var gclean = require("gulp-clean");
var paths = {
node: "./node_modules/",
lib: "./wwwroot/lib/"
};
var packages = {
"bootstrap": {
src: paths.node + "bootstrap/dist/**",
dest: paths.lib + "bootstrap"
},
"tempusdominus-core": {
src: paths.node + "tempusdominus-core/build/**",
dest: paths.lib + "tempusdominus"
},
"tempusdominus-bootstrap-4": {
src: paths.node + "tempusdominus-bootstrap-4/build/**",
dest: paths.lib + "tempusdominus"
},
"jquery": {
src: paths.node + "jquery/dist/**",
dest: paths.lib + "jquery"
},
"jquery-validation": {
src: paths.node + "jquery-validation/dist/**",
dest: paths.lib + "jquery-validation"
},
"jquery-validation-unobtrusive": {
src: paths.node + "jquery-validation-unobtrusive/dist/**",
dest: paths.lib + "jquery-validation-unobtrusive"
},
"moment": {
src: paths.node + "moment/min/**",
dest: paths.lib + "moment"
},
"moment-timezone": {
src: paths.node + "moment-timezone/builds/**",
dest: paths.lib + "moment-timezone"
},
"popper.js": {
src: paths.node + "@popperjs/core/dist/umd/**",
dest: paths.lib + "popper.js"
},
"js-cookie": {
src: paths.node + "js-cookie/src/*",
dest: paths.lib + "js-cookie"
},
"fullcalendar": {
src: paths.node + "@fullcalendar/**",
dest: paths.lib + "fullcalendar"
},
"fontawesomeJS": {
src: paths.node + "@fortawesome/fontawesome-free/js/**",
dest: paths.lib + "fontawesome"
},
"fontawesomeCSS": {
src: paths.node + "@fortawesome/fontawesome-free/css/**",
dest: paths.lib + "fontawesome"
},
"luxon": {
src: paths.node + "luxon/build/global/**",
dest: paths.lib + "luxon"
}
};
function clean() {
return gulp.src(paths.lib + "*", { read: false })
.pipe(gclean());
}
function build() {
const merge = require("merge-stream")();
for (let item in packages) {
if (packages.hasOwnProperty(item)) {
console.log(item);
console.dir(packages[item]);
merge.add(
gulp.src(packages[item].src)
.pipe(gulp.dest(packages[item].dest))
);
}
}
return merge.isEmpty() ? null : merge;
}
exports.build = build;
exports.clean = clean;
exports.default = gulp.series(clean, build);

我在谷歌上搜索了一下,但只看到有人说节点是浏览器的东西。。。但我已经在cmd终端上手动运行了几个月。

我尝试过的事情包括将node升级到最新版本。没有帮助。

我通过节点运行了gullfile:

> node gulpfile.js
file:///H:/Group_Projects/MyProject/MyProject/gulpfile.js:1
var gulp = require("gulp");
^
ReferenceError: require is not defined
at file:///H:/Group_Projects/MyProject/MyProject/gulpfile.js:1:12
at ModuleJob.run (internal/modules/esm/module_job.js:152:23)
at async Loader.import (internal/modules/esm/loader.js:166:24)
at async Object.loadESM (internal/process/esm_loader.js:68:5)

还有什么我应该试试的吗?

感谢@PiRocks,我发现我有一个type: "Module" line in my包.json`文件。删除它解决了我的问题。我不记得放在那里了,但是。。。

最新更新