代码之家  ›  专栏  ›  技术社区  ›  user1790300

babel节点:SyntaxError:使用节点的意外令牌导入。js

  •  0
  • user1790300  · 技术社区  · 5 年前

    我正试图在本地机器上运行node express应用程序,以便使用babel node动态传输文件进行测试。我创建了一个服务器。js入口点文件,其中包含以下代码:

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

    这是我的包裹。启动应用程序的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
    

    以下是我的包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节点,这样我就可以在运行中进行传输。我在这个设置中遗漏了什么可能导致这个问题?

    0 回复  |  直到 5 年前
        1
  •  0
  •   Vahid Alimohamadi    5 年前

    这是我的 package.json 我在用 cross-env 要处理env,可以使用 dotenv ... 和 pino pino-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进行生产,也可以制作easy docker。 我希望这对你有帮助。