快递有条件要求?

Conditional require in express?

我正在开发中使用 reload 包。

保存在package.jsondevDependancies下。

在我的 app.js 我有:

if (process.env.NODE_ENV !== 'production') {
    reload(server, app)
}

Heroku 在构建后删除了 devDependancies 下的所有包,而我的 import reload from 'reload' 抛出了一个错误。我正在使用 babel 在生产环境中构建它。

Heroku 日志:

Error: Cannot find module 'reload'
2018-05-16T01:00:46.213772+00:00 app[web.1]:     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:571:15)
2018-05-16T01:00:46.213773+00:00 app[web.1]:     at Function.Module._load (internal/modules/cjs/loader.js:497:25)
2018-05-16T01:00:46.213776+00:00 app[web.1]:     at Module.require (internal/modules/cjs/loader.js:626:17)

我知道我可以 skip the "pruning" part,但我更愿意在生产中剥离 reload 模块的加载。

如何有条件地导入或要求包?

一般规则是将导入放在顶部,但您不必这样做

if (process.env.NODE_ENV !== 'production') {
    require('reload')(server, app)
}

应该可以。