Javascript,汇总:";进口;执行汇总时,汇总内部文件中的语法会导致语法错误

Javascript,汇总:";进口;执行汇总时,汇总内部文件中的语法会导致语法错误,javascript,npm,ecmascript-6,rollup,Javascript,Npm,Ecmascript 6,Rollup,我有一个带有汇总绑定器的nodeJS/express应用程序。我使用rollup config文件,命令在package.json中定义,如:“build”:“env rollup\u OPTIONS='prod'rollup--config configs/rollup.config.js”。当我尝试“npm运行构建”时,出现错误: > deep@1.0.0 watch C:\Users\1\Desktop\sprout-test\sprout-backend > env ROLL

我有一个带有汇总绑定器的nodeJS/express应用程序。我使用rollup config文件,命令在package.json中定义,如:“build”:“env rollup\u OPTIONS='prod'rollup--config configs/rollup.config.js”。当我尝试“npm运行构建”时,出现错误:

> deep@1.0.0 watch C:\Users\1\Desktop\sprout-test\sprout-backend
> env ROLLUP_OPTIONS='dev' rollup --config configs/rollup.config.js --watch



C:\Users\1\Desktop\sprout-test\sprout-backend\node_modules\rollup\dist\shared\loadConfigFile.js:484
        ? (await import(url.pathToFileURL(fileName).href)).default
                 ^^^^^^

SyntaxError: Unexpected token import
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:616:28)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (C:\Users\1\Desktop\sprout-test\sprout-backend\node_modules\rollup\dist\bin\rollup:23:25)
此函数(如上)位于第481行的节点_modules/rollup/dist/shared/loadConfigFile.js中。进程将此函数中的动态导入语法作为语法错误(意外标记“导入”)。似乎rollup在进程执行我自己的配置文件之前抛出了这个错误。根据这一点,我假设汇总源代码导致了这个错误,而不是我的源代码,因为我的代码没有机会被加载和执行。如果我是对的,玩插件等是没有意义的,因为汇总甚至没有达到这一点,它加载我的插件(例如babel)、配置或解析我的代码。根据docs,rollup应该在自己的文件和我的配置文件中支持“导入/导出”语法,而不需要任何额外的配置

以下是我的开发依赖项列表,以及我使用的汇总版本:

"devDependencies": {
    "@babel/core": "^7.9.0",
    "@babel/plugin-transform-runtime": "^7.9.0",
    "@babel/preset-env": "^7.9.5",
    "@rollup/plugin-commonjs": "^11.1.0",
    "@rollup/plugin-json": "^4.0.2",
    "@rollup/plugin-node-resolve": "^7.1.3",
    "@rollup/plugin-run": "^2.0.2",
    "eslint": "^6.8.0",
    "lint-staged": "^10.1.6",
    "prettier": "^2.0.4",
    "rollup": "^2.6.1",
    "rollup-plugin-babel": "^4.4.0",
    "rollup-plugin-includepaths": "^0.2.3",
    "rollup-plugin-uglify": "^6.0.4"
  }
为了以防万一,我放置了整个列表,但正如我所说的,我认为我的babel插件在这里是无关的,因为错误是在rollup加载rollup.config.js之前抛出的,而babel配置就是在这里加载的。重要的是,项目在我创建repo(windows 10)的机器上运行时没有错误,在我克隆repo(windows 7)的机器上运行时失败——所以节点、git和npm的版本在这里和那里是不同的。但根据package.json文件,两台机器上的汇总版本是相同的

我的节点版本(WIN7):8.11.3

我的npm版本(Win7):6.4.14


我尝试了(win7)“npm uninstall rollup-g”(只是为了确定,以防它是全局安装的,并且与项目中的版本冲突),但它不起作用。现在我不知道该怎么办,也找不到类似于我的问题的资源。如果您有任何建议,我将不胜感激。

您在Win7机器上使用的NodeJS版本与您正在使用的Rollup版本不兼容,您可以通过检查发现这一点


通过使用engine属性,NPM包可以指定它们与哪些版本的NodeJS兼容,在本例中,需要版本10或更高版本。

这些是一些非常旧的NodeJS版本,它们与您在Win10机器上使用的版本相同吗?这些旧版本可能不支持使用导入?您正在使用新版本的Rollup,并且在其包中。json他们声明他们需要NodeJS 10或更高版本@Milton您是对的,过时的NodeJS版本导致了问题。@Milton请再次发布您的评论作为答案,以便我可以将其标记为已接受。我认为它对nodej初学者非常有用:)
"devDependencies": {
    "@babel/core": "^7.9.0",
    "@babel/plugin-transform-runtime": "^7.9.0",
    "@babel/preset-env": "^7.9.5",
    "@rollup/plugin-commonjs": "^11.1.0",
    "@rollup/plugin-json": "^4.0.2",
    "@rollup/plugin-node-resolve": "^7.1.3",
    "@rollup/plugin-run": "^2.0.2",
    "eslint": "^6.8.0",
    "lint-staged": "^10.1.6",
    "prettier": "^2.0.4",
    "rollup": "^2.6.1",
    "rollup-plugin-babel": "^4.4.0",
    "rollup-plugin-includepaths": "^0.2.3",
    "rollup-plugin-uglify": "^6.0.4"
  }