【问题标题】:Deploy nodejs issue on CF/BlueMix在 CF/BlueMix 上部署 nodejs 问题
【发布时间】:2017-01-01 21:41:56
【问题描述】:

当我尝试将以下 repo 部署到 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.js ibm-cloud cloud-foundry pivotal-web-services


    【解决方案1】:

    您是否使用项目中的 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
    

    【讨论】:

    • 不,我已经把它放在 .cf ignore -> node_modules/ 中,有选项可以清除缓存而不删除?
    • 我不确定,不过,这个问题看起来可能会有所帮助stackoverflow.com/questions/31006154/…
    • 并考虑尝试下载开发部门的问题?有什么想法方向吗?我卡住了...谢谢!
    • 您是否尝试过设置--production 标志或NPM_CONFIG_PRODUCTION=true github.com/cloudfoundry/nodejs-buildpack/issues/16
    • 我该怎么做你举个例子?我尝试在清单中添加 env: NODE_ENV: production which doesn't help...
    猜你喜欢
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 2011-03-04
    相关资源
    最近更新 更多