babel-node:语法错误:使用 node.js 导入意外的令牌



我正在尝试在本地机器上运行一个节点快速应用程序以进行测试,使用 babel-node 进行即时转译。 我创建了一个服务器.js入口点文件,其中包含以下代码:

require("@babel/register")();
// Import the rest of our application.
module.exports = require('./bin/www');

这是我的 package.json 脚本条目来启动应用程序:

"testLocal": "nodemon --verbose --exec babel-node server.js --inspect=0.0.0.0:56746"

我在项目根目录下添加了一个 .babelrc 文件,其中包含以下代码:

{
"presets": ["@babel/preset-env"]
}

问题是我继续收到以下错误:

import cluster from 'cluster';
^^^^^^
SyntaxError: Unexpected token import

这是我的 package-json 文件中的包,我已经删除了一些以将代码剥离到最低限度的示例:

"@babel/core": "^7.11.6",
"@babel/node": "^7.12.1",
"@babel/plugin-proposal-object-rest-spread": "^7.12.1",
"@babel/plugin-proposal-optional-chaining": "^7.11.0",
"@babel/plugin-transform-async-to-generator": "^7.12.1",
"@babel/plugin-transform-modules-commonjs": "^7.4.4",
"@babel/plugin-transform-runtime": "^7.12.1",
"@babel/polyfill": "^7.11.5",
"@babel/preset-env": "^7.12.1",
"@babel/register": "^7.11.5",

我在几篇不同的文章中找到了这个例子,但它似乎没有转译。 我正在本地机器上使用 babel 节点,因此我可以即时转译。 此设置中缺少哪些可能导致此问题的内容?

这是我使用cross-env来处理 envpackage.json,您可以使用dotenv...以及日志的pinopino-pretty

"scripts": {
"nobuildprod": "pm2 startOrRestart ecosystem.config.js --env production",
"dev": "./node_modules/.bin/cross-env NODE_ENV=development ./node_modules/.bin/nodemon --exec ./node_modules/.bin/babel-node --trace-warnings src/index.js  | pino-pretty",
"build": "./node_modules/.bin/babel src --out-dir ./dist --source-maps --copy-files",
...
"dependencies": {
"@babel/runtime": "^7.11.2",
"pino": "^6.7.0",
"pino-http": "^5.3.0",
"pino-pretty": "^4.3.0",

...

"devDependencies": {
"@babel/cli": "^7.11.6",
"@babel/core": "^7.11.6",
"@babel/node": "^7.10.5",
"@babel/plugin-proposal-decorators": "^7.10.5",
"@babel/plugin-transform-runtime": "^7.11.5",
"@babel/preset-env": "^7.11.5",
"@babel/register": "^7.11.5",

服务器.js

require('@babel/register');
require('./src/index.js');

.babelrc (我正在使用装饰器)

{
"presets": [
["@babel/preset-env"]
],
"plugins": [
["@babel/transform-runtime"],
["@babel/plugin-proposal-decorators", {"legacy" : true}]
],
"env": {
"development": {
"sourceMaps": true,
"retainLines": true
}
}
}

和生态系统配置.js

module.exports = {
apps: [
{
name: 'myapp',
script: 'server.js',
instances: 'max',
env: {
NODE_ENV: 'development',
},
env_development: {
NODE_ENV: 'development',
},
env_test: {
NODE_ENV: 'test',
},
env_production: {
NODE_ENV: 'production',
},
},
],
};

所以我的源文件位于./src我可以运行这个应用程序进行开发,使用 pm2 进行生产,也可以制作简单的 docker。 希望对您有所帮助。

最新更新