我有一个使用esm模块和import语句的应用程序。在带有nodemon的--experimental-modules标志下,它在开发中运行良好,但是当我在生产中使用永远运行它时,导入会失败,因为我不知道将标志放在哪里。当我使用下面的package.json运行npm run build
时,它显示为sh: --experimental-modules: command not found
。
如果将--experimental-modules添加到forever-config.json的“脚本”部分,则表示相同的内容。
我已经在互联网上搜索了几次。如何永远使用--experimental-modules标志?我正在运行Node v10.16.0。
{
"type": "module",
"name": "application_name",
"version": "1.0.0",
"private": true,
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "concurrently \"npm run build:dev\" \"npm run start-server:dev\"",
"build": "npm run build:prod && npm run start-server:prod",
"build:dev": "webpack --config webpack-dev.config.js",
"build:prod": "webpack -p --config webpack-prod.config.js",
"start-server:dev": "NODE_ENV=development nodemon --config nodemon.json --experimental-modules src/server/index.mjs ",
"start-server:prod": "NODE_ENV=production --experimental-modules forever -o ./forever-out.log -e ./forever-error.log start forever-config.json"
},
//rest of package.json left out for brevity
}
forever-config.json
{
"uid": "application_name",
"max": 5,
"spinSleepTime": 1000,
"minUptime": 1000,
"append": true,
"watch": false,
"script": "src/server/index.mjs"
}
答案 0 :(得分:1)
如果您无权访问forever-config.json,您可以像这样运行命令:
forever -c "node --experimental-modules" start app.js
答案 1 :(得分:0)
我似乎能够通过传递该标志的command
属性使其工作,例如:
{
"uid": "myApp",
"max": 100,
"spinSleepTime": 30000,
"append": true,
"watch": false,
"command": "node --experimental-modules",
"script": "./scripts/some-script.mjs",
"path": "D:/MyProject",
"workingDir": "./",
"sourceDir": "./",
"logFile": "./forever-script-log.log",
"outFile": "./forever-script-out.log",
"errFile": "./forever-script-err.log",
"args": ["--someOpt", "someVal"]
}
注意:您还可以使用args
将args传递到脚本/应用程序。
答案 2 :(得分:0)