我正在尝试使用Rollup生成一个树摇动的、精简的脚本,以部署到AWS Lambda。然而,由于某些原因,rollup似乎被choking local-storage库阻塞了。
错误:
Error: Unexpected token
at error (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:5154:30)
at Module.error (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:9592:16)
at tryParse (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:9506:23)
at Module.setSource (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:9890:30)
at ModuleLoader.addModuleSource (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:17742:20)
at ModuleLoader.fetchModule (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:17796:9) {
code: 'PARSE_ERROR',
parserError: SyntaxError: Unexpected token (24:0)
at Object.pp$4.raise (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:15064:13)
at Object.pp.unexpected (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:12835:8)
at Object.pp$1.parseStatement (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:12975:120)
at Object.pp$1.parseIfStatement (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:13136:26)
at Object.pp$1.parseStatement (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:12980:31)
at Object.pp$1.parseTopLevel (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:12892:21)
at Object.parse (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:12692:15)
at Function.parse (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:12715:35)
at tryParse (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:9493:23)
at Module.setSource (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:9890:30)
at ModuleLoader.addModuleSource (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:17742:20)
at ModuleLoader.fetchModule (/Users/chris/Code/box-stack/node_modules/rollup/dist/shared/rollup.js:17796:9) {
pos: 418,
loc: Position { line: 24, column: 0 },
raisedAt: 426
},
id: '/Users/chris/Code/box-stack/node_modules/continuation-local-storage/context.js',
pos: 418,
loc: {
file: '/Users/chris/Code/box-stack/node_modules/continuation-local-storage/context.js',
line: 17,
column: 0
},
frame: '15: if (!process.addAsyncListener) ' +
"require('async-listener');\n16: \n17: function " +
'Namespace(name) {\n ^\n18: this.name = name;\n19: // ' +
'changed in 2.7: no default context',
watchFiles: [
...
]
}违规代码(continuation local-storage/context.js第17行,位置0)是:
function Namespace(name) {我不明白这里怎么会有语法错误:
我通过javascript api运行rollup,因为我需要以编程方式生成输入,这是我调用构建的地方:
try {
const build = await rollup({
external: ['aws-sdk', ...builtinModules],
input,
plugins: [
commonjs(),
nodeResolve({ extensions: ['.ts', '.js', '.json', '.node', '.mjs'] }),
json(),
babel({ extensions: ['.ts'], babelHelpers: 'bundled' })
]
});
await build.write({
dir: outDir,
format: 'cjs',
entryFileNames: '[name].js',
sourcemap: false
});
} catch (err) {
console.log(err);
throw err;
}发布于 2020-07-17 18:52:10
如果其他人遇到这个问题,有一种解决方法:
https://github.com/rollup/plugins/issues/202
添加替换:
plugins: [
replace({"if (!process.addAsyncListener) require('async-listener": "require('async-listener"})
]https://stackoverflow.com/questions/62560290
复制相似问题