Javascript 将ES6导入模块与pkg一起使用
我正在尝试使用pkg将节点应用程序打包为exe,我想使用ES6导入 我的src/app.js中有类似的内容:Javascript 将ES6导入模块与pkg一起使用,javascript,node.js,import,es6-modules,Javascript,Node.js,Import,Es6 Modules,我正在尝试使用pkg将节点应用程序打包为exe,我想使用ES6导入 我的src/app.js中有类似的内容: import express from 'express' const app = express() const eco = (req, res) => { const { method, url, headers, query } = req res.json({ method, url, headers, query }) } app.all('/', eco)
import express from 'express'
const app = express()
const eco = (req, res) => {
const { method, url, headers, query } = req
res.json({ method, url, headers, query })
}
app.all('/', eco)
app.listen(3000, () => console.log(`listening on http://localhost:3000`))
在my package.json中,我有:
{
"name": "pkg-test",
"version": "1.0.0",
"description": "",
"main": "src/app.js",
"type": "module",
"type": "module",
"scripts": {
"build": "pkg --targets=node12-win-x64 --output=iisnode-pkg.exe --options experimental-modules src/app.js",
"start": "node --experimental-modules src/app.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1"
},
"devDependencies": {
"pkg": "^4.4.0"
}
}
npm启动工作正常
$npm开始
>斯诺德-pkg@1.0.0启动C:\data\devel\apps\tmp\iisnode pkg
>节点——实验模块src/app.js
(节点:10668)实验警告:ESM模块加载程序是实验性的。
欢迎来到iisnode pkg
iisnode pkg正在侦听http://localhost:3000
但是npm run build
给出一个衰减,然后运行exe抛出一个错误:
>npm运行构建
>斯诺德-pkg@1.0.0生成C:\data\devel\apps\tmp\iisnode pkg
>pkg--targets=node12-win-x64--output=iisnode-pkg.exe src/app.js--config package.json
> pkg@4.4.0
>警告:为文件C:\snapshot\iisnode pkg\src\app.js生成字节码node12-x64失败
>iisnode-pkg.exe
C:\snapshot\iisnode pkg\src\app.js:2
从“express”导入express
^^^^^^^
SyntaxError:意外的标识符
at模块编译(内部/modules/cjs/loader.js:701:23)
编译模块(pkg/prelude/bootstrap.js:1268:32)
在Object.Module._extensions..js(internal/modules/cjs/loader.js:768:10)
在Module.load(内部/modules/cjs/loader.js:626:32)
at Function.Module._load(内部/modules/cjs/loader.js:553:12)
在Function.Module.runMain(pkg/prelude/bootstrap.js:1316:12)
在internal/main/run\u main\u module.js:17:11
似乎没有考虑package.json中构建脚本中的--options-experimental modules
参数
知道如何使用从打包了pkg的节点应用程序导入的ES6模块吗?尝试将
app.js
重命名为app.mjs
确保运行的是最新版本的节点。
您需要添加到pkg
配置中。
因此,在package.json
中:
"pkg": {
"options": ["experimental-modules"]
}
节点文档:他已经在他的
包.json中有了“type”:“module”
,所以不管怎样它都应该工作。这仍然有效吗?我很想知道如何在package.json中放置实验模块
need,但是您链接到的页面没有提到pkg
或选项
(命令行选项除外)。