您是否使用项目中的 node_modules 文件夹推送到 Bluemix?如果是,请尝试将其完全删除并重新推送。
还有,
只需在 .cignore 文件中添加行 node_modules 即可忽略 node_modules 目录。 buildpack 将在您的 Cloud Foundry 容器中运行 node install。另外,我建议您执行 cf delete 以将其从缓存中删除,然后再次执行 cf push
来源:查看这个问题的cmets:unable to push node.js cloudant app to 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
您可以使用NODE_MODULES_CACHE: false 要求节点构建包不缓存模块并在每次推送时下载它们,例如
applications:
- name: ...
buildpack: nodejs_buildpack
memory: 512M
command: ...
env:
NODE_MODULES_CACHE: false