0

我在 node.js 和 express.js 中有我的项目。我需要制作 node.js 项目的可执行文件。

项目配置:

使用 ES6 特性:导入和动态导入,对于这个 babel.js,我正在使用。

项目状态:

项目运行正常没问题。

项目的转译正在工作。那就是捆绑创建是可以的。

问题/错误/问题:

使用命令打包时:

包。--调试

它给出了“导入”错误

package.json 配置:

{
  "name": "server",
  "version": "0.0.0",
  "private": true,
  "bin": "./app.js",
  "main":"./app.js",
  "engines": {
    "node": ">=6"
  },
  "scripts": {
    "start": "nodemon app.js --exec babel-node",
    "test": "nodemon NODE_ENV=development",
    "build": "webpack --config build/webpack.config.js --progress true --display-error-details true"
  },
  "dependencies": {
    "nodemailer": "^4.6.6",
    "protractor": "^5.3.2",
    "pug": "^2.0.3",
    "request": "^2.79.0",
    "serve-favicon": "*",
    "underscore": "^1.9.1",
    "winston": "^2.4.1"
  },
  "devDependencies": {
    "@babel/cli": "^7.1.2",
    "@babel/core": "^7.1.2",
    "@babel/node": "^7.0.0",
    "@babel/plugin-syntax-dynamic-import": "^7.0.0",
    "@babel/plugin-transform-runtime": "^7.1.0",
    "@babel/preset-env": "^7.1.0",
    "@babel/register": "^7.0.0",
    "babel-loader": "^8.0.4",
    "babel-plugin-dynamic-import-node": "^2.1.0",
    "html-webpack-plugin": "^3.2.0",
    "nodemon": "*",
    "pkg": "^4.3.4",
    "rimraf": "^2.6.1",
    "script-ext-html-webpack-plugin": "^2.0.1",
    "webpack": "^4.20.2",
    "webpack-cli": "^3.1.2"
  },
  "pkg": {
    "scripts": [
      "node_modules/*",
      "build/output/main.bundle.js"
    ],
    "assets": [
      "views/**/*",
      "public/*"
    ],
    "targets": [
      "node8"
    ]
  }
}

webapck.config.js :

module.exports = {
   node: {
    __dirname: true,
    __filename: true
 },
 target: 'node',
  mode: 'development', 
  entry: ["./app.js"],
  output: {
    filename: '[name].bundle.js',
    path: path.resolve(__dirname, 'output')    
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          'style-loader',
          'css-loader'
        ]
      },
      {
        test: /\.m?js$/,
        exclude: /(node_modules|bower_components)/,
        resolve: {
            extensions: [".js",".json"]
        },
        use: [{
            loader: 'babel-loader',
            options: {
                presets: [
                    '@babel/preset-env'                   
                 ],
                 plugins: [
                    '@babel/plugin-transform-runtime'
                 ]
            }
        }]
      }
    ],
    exprContextRegExp: /$^/,
    exprContextCritical: false
  }
};

我得到的错误:

> Warning Failed to make bytecode node8-x64 for file C:\snapshot\server\app\modules\v1\user\routes\routes.js
C:\snapshot\server\app\modules\v1\user\routes\admin-routes.js:1
(function (exports, require, module, __filename, __dirname) { import {
                                                              ^^^^^^

SyntaxError: Unexpected token import
    at Socket.<anonymous> ([eval]:18:19)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at Socket.Readable.push (_stream_readable.js:208:10)
    at Pipe.onread (net.js:597:20)
C:\snapshot\pickcel-server\app\modules\v1\user\routes\admin-routes.js:1
(function (exports, require, module, __filename, __dirname) { import {
                                                              ^^^^^^

会是什么原因??

有人可以提出一些建议或策略吗?

问候

4

1 回答 1

1

pkg .将使用 的bin属性package.json并使用它来确定入口文件,在您的情况下是app.js.

假设该文件未转译,并且您想打包转译的捆绑包,请尝试以下操作:

pkg build/output/main.bundle.js --debug
于 2018-10-08T19:05:53.840 回答