当我尝试将以下存储库部署到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


抵制依赖关系的原因可能是什么?

最佳答案

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


也,


  只需在.cfignore文件中添加node_modules行即可忽略node_modules目录。 buildpack将在您的Cloud Foundry容器中运行节点安装。另外,我建议您执行cf删除操作以将其从缓存中删除,然后再次执行cf推送


来源:请参阅以下问题的评论: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上传应用程序时,可以排除cf push中的dist文件夹并进行构建吗?我不确定是否在manifest.yml中添加多个命令,例如

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


但是,看起来您在新的build命令(例如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

关于node.js - 在CF/BlueMix上部署Node.js问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41419281/

10-16 03:44