1

当我尝试将以下存储库部署到 CF/BlueMix 时,“devDependencies”出现错误:

Error: Cannot find module 'webpack' 

如果我将 webpack 添加到 dep 我得到了错误

Error: Cannot find module 'postcss-cssnext'

并继续其他开发部门......

devDependencies的哪一部分,部署不应该只安装“prod”依赖项?

这是回购:https ://github.com/Hashnode/mern-starter

我在本地运行构建,npm run bs并将以下内容放入 manifest.yml

---
applications:
- name: myapp
  buildpack: nodejs_buildpack
  memory: 512M
  command: npm run start:prod
  services:
    - mong

失败的原因可能是什么?

4

1 回答 1

0

您是否使用项目中的 node_modules 文件夹推送到 Bluemix?如果是,请尝试将其完全删除并重新推送。

还,

只需在 .cignore 文件中添加行 node_modules 即可忽略 node_modules 目录。buildpack 将在您的 Cloud Foundry 容器中运行 node install。另外,我建议您执行 cf delete 以将其从缓存中删除,然后再次执行 cf push

来源:查看此问题的评论:无法将 node.js cloudant 应用程序推送到 bluemix


更新

我想我已经重现了这个问题:

2017-01-01T23:12:14.45+0000 [App/0]      ERR Error: Cannot find module 'webpack'
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Function.Module._resolveFilename (module.js:339:15)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Function.Module._load (module.js:290:25)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Module.require (module.js:367:17)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at require (internal/module.js:16:19)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Object.defineProperty.value (/home/vcap/app/dist/server.bundle.js:280:19)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Object.<anonymous> (/home/vcap/app/dist/server.bundle.js:1930:17)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Object.defineProperty.value (/home/vcap/app/dist/server.bundle.js:2074:31)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at __webpack_require__ (/home/vcap/app/dist/server.bundle.js:20:30)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at /home/vcap/app/dist/server.bundle.js:40:18
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Object.<anonymous> (/home/vcap/app/dist/server.bundle.js:43:10)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Module._compile (module.js:413:34)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Object.Module._extensions..js (module.js:422:10)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Module.load (module.js:357:32)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Function.Module._load (module.js:314:12)
2017-01-01T23:12:14.45+0000 [App/0]      ERR     at Module.require (module.js:367:17)

webpack 导入问题似乎与dist/server.bundle.js对我来说由命令生成的文件有关npm run bs

dist 文件夹正在上传到 Bluemix,并且在您的应用程序启动时似乎正在导入。

.cfignore您可以在上传应用程序时排除 dist 文件夹并构建它cf push吗?我不确定你是否在 manifest.yml 中添加了多个命令,例如

command: npm <<your_new_build_command>> && npm run start:prod

但是,看起来您在新的构建命令(例如npm run bs:prod)中所做的任何事情都只会在创建 dist 文件夹时获取生产依赖项。

如果您无法从 manifest.yml 运行多个命令,那么您可能需要进行更改start:prod,以便它还为生产环境执行构建步骤。

更新 2

您可以要求节点 buildpack 不缓存模块并在每次推送时下载它们NODE_MODULES_CACHE: false,例如

applications:
- name: ...
  buildpack: nodejs_buildpack
  memory: 512M
  command: ...
  env:
     NODE_MODULES_CACHE: false
于 2017-01-01T22:08:54.677 回答