Как сделать исполняемый файл проекта узла? - PullRequest
0 голосов
/ 08 октября 2018

У меня есть проект в node.js и express.js.Мне нужно сделать исполняемый файл проекта node.js.

Конфигурация проекта:

Использование функций ES6: импорт и динамический импорт, и для этого babel.js я использую.

Статус проекта:

Проект работает правильно, без проблем.

Работает трансплантация проекта.То есть создание пакета в порядке.

Проблема / Ошибка / Проблема:

при упаковке командой:

pkg.--debug

выдает ошибку 'import'

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 {
                                                              ^^^^^^

В чем будет причина ??

Может кто-нибудь дать какое-нибудь предложение или стратегию?

С уважением

1 Ответ

0 голосов
/ 08 октября 2018

pkg . будет использовать bin свойство package.json и использовать его для определения файла записи, который в вашем случае равен app.js.

Предполагая, что этот файл не передается,и вы хотите упаковать транспортированную связку, попробуйте это:

pkg build/output/main.bundle.js --debug
...