【发布时间】:2021-08-11 20:50:21
【问题描述】:
我使用 create-react-app 创建了一个 React 应用程序并尝试在端口 80 下运行它,但它需要管理员权限,所以我最终运行了:
sudo 纱线开始
抛出了一个错误:
me@mypc:<projectDirectory>$ sudo yarn start
yarn run v1.19.1
warning ../../../package.json: No license field
$ PORT=80 react-scripts start
<projectDirectory>/node_modules/terser-webpack-plugin/node_modules/p-limit/index.js:28
} catch {}
^
SyntaxError: Unexpected token {
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> (<projectDirectory>/node_modules/terser-webpack-plugin/dist/index.js:24:38)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
它抱怨的函数如下所示:
const run = async (fn, resolve, ...args) => {
activeCount++;
const result = (async () => fn(...args))();
resolve(result);
try {
await result;
} catch {}
next();
};
Afaik 可以在没有异常参数的情况下使用 try ... catch 块,我什至自己测试过以确保。
我的节点版本是 v14.17.0。该模块是否会使用一些不支持该语法的古老模块?任何想法如何解决此问题或以其他方式在端口 80 上运行使用 create-react-app 创建的 react 应用程序?
【问题讨论】:
-
Empty catch 是最近才引入的。
-
我刚刚更新到 v16.2.0 并没有改变任何东西。
-
从 v10 node.green/#ES2019-misc-optional-catch-binding 开始,Node 支持可选的 catch 绑定,所以这在 14 或 16 中应该不是问题。您确定 Yarn 是针对这些版本安装的吗?试试
yarn node --version。 -
是的,它是一样的。尝试通过 sudo 运行新的 create-react-app 项目时出现同样的错误。
标签: node.js webpack create-react-app yarnpkg sudo