我有一个带有rollup bundler的nodeJS/express应用程序。我使用rollup配置文件,命令在包中定义。json,比如:“build”:“env ROLLUP_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)
在汇总源代码中,这是导致错误的函数:
async function loadConfigFile(fileName, commandOptions) {
const extension = path.extname(fileName);
const configFileExport = extension === '.mjs' && supportsNativeESM()
? (await import(url.pathToFileURL(fileName).href)).default
: extension === '.cjs'
? getDefaultFromCjs(require(fileName))
: await getDefaultFromTranspiledConfigFile(fileName, commandOptions.silent);
return getConfigList(configFileExport, commandOptions);
}
此函数(见上图)位于node_modules/rollup/dist/shared/loadConfigFile中。第481行。进程将此函数中的动态导入语法作为语法错误(意外标记“导入”)。似乎rollup在进程执行我自己的配置文件之前抛出了这个错误。根据这一点,我假设汇总源代码导致了这个错误,而不是我的源代码,因为我的代码没有机会被加载和执行。如果我是对的,玩插件等游戏是没有意义的,因为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插件在这里无关紧要,因为错误是在加载babel配置的rollup.config.js之前抛出的。重要的是,项目在我创建repo的机器上运行没有错误(windows 10),在我克隆repo的机器上失败(windows 7)-所以node、git和npm版本在这里和那里是不同的。但是根据package.json文件,两台机器上的汇总版本是相同的。
我的节点版本(win 7):8.11.3
我的npm版本(win 7):6.4.14
我尝试了(win7)“npm uninstall rollup-g”(只是为了确定,以防它是在全球安装的,并且与项目中的版本冲突),但它不起作用。现在我不知道该怎么办,我也没有找到关于类似问题的资源。如果您有任何建议,我将不胜感激。
您在Win7机器上使用的NodeJS版本与您使用的Rollup版本不兼容,您可以通过检查https://github.com/rollup/rollup/blob/master/package.json#L141.
通过使用engine属性,NPM包可以指定它们与哪些版本的NodeJ兼容,在这种情况下,需要10或更高版本。
部署到netlify失败并出现错误:,但当我使用在本地构建时它可以工作(与netlify相同)。无法解析的包直接从github安装,而不是其他包。 package.json: netlify日志: KeyNavigation.ts: 为什么部署在netlify失败,而不是在本地?
Rollup 是 JavaScript 的模块 bundler,可将一小段代码编译为更大或更复杂的内容,例如库或应用程序。 它对 JavaScript 的 ES6 修订版中包含的代码模块使用了新的标准化格式,而不是先前的特殊解决方案(例如 CommonJS 和 AMD)。ES 模块使用户可以自由,无缝地结合自己喜欢的库中最有用的单个函数。
似乎我们可以使用typescript来编写汇总配置文件。比如说,我可以创建一个名为,包含以下内容: 如果我以。 但如果我在其中使用一些打字: 它将报告以下错误: 有可能让它工作吗?我试着用ts节点
rollup-plugin-dev a development server for rollup why this plugin? compared to other plugins, this plugin: uses Fastify to provide the server and implement features while this means there are dependen
DEPRECATED We are deprecating this template in favor of the webpack one. Some things may have changed and I haven't tested this template in a while. Check the Groceries Vue app for an example of a wor