如何使节点项目可执行?



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

项目配置:

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

项目现状 :

项目运行正常没有问题。

该项目的转译工作正在进行中。也就是说捆绑创作是可以的。

问题/错误/问题 :

使用命令打包时:

pkg . --调试

它给出"导入"的错误

包.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:snapshotserverappmodulesv1userroutesroutes.js
C:snapshotserverappmodulesv1userroutesadmin-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:snapshotpickcel-serverappmodulesv1userroutesadmin-routes.js:1
(function (exports, require, module, __filename, __dirname) { import {
^^^^^^

会是什么原因??

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

问候

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

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

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

最新更新