繁体   English   中英

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

[英]babel-node: Syntax Error: Unexpected token import using node.js

我正在尝试在我的本地机器上运行一个 node express 应用程序以进行测试,使用 babel-node 进行动态编译。 我创建了一个 server.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-node,所以我可以即时转译。 我在此设置中遗漏了什么可能导致此问题?

这是我的package.json我使用cross-env来处理 env,你可以使用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
        }
    }
}

和生态系统.config.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我可以为开发运行这个应用程序,使用./src进行生产,并制作简单的 docker。 我希望它对你有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM