如何使用--experimental-modules标志永久运行js

时间:2019-06-20 12:55:30

标签: node.js server production-environment es6-modules forever

我有一个使用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"
}

3 个答案:

答案 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)

您还可以在.bashrc等中设置NODE_OPTIONS环境变量:

export NODE_OPTIONS="--experimental-modules"

(使用NVM时似乎需要{export

相关问题