【发布时间】:2023-03-24 18:37:01
【问题描述】:
我正在使用 Babel 在服务器端开发 MERN 堆栈应用程序,以便我可以编写 ES6。当我尝试部署到 Heroku 时出现错误:“意外的保留字 'package'”
我的 Heroku 相关脚本:
{
"build": "babel . -d build --ignore ./client,node_modules",
"heroku-postbuild": "YARN_PRODUCTION=false yarn build && yarn --cwd client install && yarn --cwd client build"
}
完整的错误信息:
remote: SyntaxError: /tmp/build_92b72922d4bd2872f60dec7f1e038c5d/.heroku/node/lib/node_modules/npm/node_modules/init-package-json/default-input.js: Unexpected reserved word 'package' (48:11)
remote:
remote: 46 | }}
remote: 47 |
remote: > 48 | var name = package.name || basename
remote: | ^
remote: 49 | var spec
remote: 50 | try {
remote: 51 | spec = npa(name)
remote: at Object._raise (/tmp/build_92b72922d4bd2872f60dec7f1e038c5d/node_modules/@babel/parser/lib/index.js:757:17)
remote: at Object.raiseWithData (/tmp/build_92b72922d4bd2872f60dec7f1e038c5d/node_modules/@babel/parser/lib/index.js:750:17)
remote: at Object.raise (/tmp/build_92b72922d4bd2872f60dec7f1e038c5d/node_modules/@babel/parser/lib/index.js:744:17)
remote: at Object.checkReservedWord (/tmp/build_92b72922d4bd2872f60dec7f1e038c5d/node_modules/@babel/parser/lib/index.js:10916:14)
remote: at Object.parseIdentifierName (/tmp/build_92b72922d4bd2872f60dec7f1e038c5d/node_modules/@babel/parser/lib/index.js:10876:12)
remote: at Object.parseIdentifier (/tmp/build_92b72922d4bd2872f60dec7f1e038c5d/node_modules/@babel/parser/lib/index.js:10847:23)
remote: at Object.parseExprAtom (/tmp/build_92b72922d4bd2872f60dec7f1e038c5d/node_modules/@babel/parser/lib/index.js:9958:27)
remote: at Object.parseExprAtom (/tmp/build_92b72922d4bd2872f60dec7f1e038c5d/node_modules/@babel/parser/lib/index.js:4648:20)
remote: at Object.parseExprSubscripts (/tmp/build_92b72922d4bd2872f60dec7f1e038c5d/node_modules/@babel/parser/lib/index.js:9688:23)
remote: at Object.parseMaybeUnary (/tmp/build_92b72922d4bd2872f60dec7f1e038c5d/node_modules/@babel/parser/lib/index.js:9668:21) {
remote: loc: Position { line: 48, column: 11 },
remote: pos: 1484,
remote: code: 'BABEL_PARSE_ERROR'
remote: }
需要注意的几点:
-
我不得不将
node_modules添加到 Babel 忽略(但我不确定这是否是一个好主意),因为它给了我一个Unexpected token错误:import * as $protobuf from $DEPENDENCY;` // On the `$` of "$DEPENDENCY" -
我以为我不想转译客户端文件夹,因为 React 有自己的构建脚本(默认)
-
我的 babel 配置:
module.exports = { presets: ["@babel/preset-env", "@babel/preset-react"], plugins: ["@babel/plugin-proposal-class-properties"] }; -
我的文件夹结构:
【问题讨论】:
标签: node.js express heroku babeljs mern