Heroku 上的 Babel 转译保留关键字 'package' 错误
Babel transpilation reserved keyword 'package' error on Heroku
我正在服务器端使用 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 ignore(我不确定这是否是个好主意)因为它给了我一个 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"]
};
我的文件夹结构:
找到修复:
我只需要将每个与服务器相关的 files/folder 放入其自己的目录中,并根据需要更新 babel 转译脚本
我正在服务器端使用 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 ignore(我不确定这是否是个好主意)因为它给了我一个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"] };
我的文件夹结构:
找到修复:
我只需要将每个与服务器相关的 files/folder 放入其自己的目录中,并根据需要更新 babel 转译脚本