节点程序包对IBM Cloud Foundry的依赖关系-需求/模块未定义(程序包未加载)

时间:2019-03-18 01:28:27

标签: node.js eclipse ibm-cloud cloudfoundry

我正在通过IBM Cloud上的工具链工具来开发应用程序,并通过Eclipse Orion IDE编辑代码。由于我不是通过本地cli访问此文件,因此我的理解是,为了调用npm install {package},我只需要将该包包含在package.json文件中的依赖项和require下在我的应用中但是,当我加载该应用程序时,未得到需求的定义,表明该软件包尚未安装。而且,require()在启动应用程序的app.js文件中正在使用,但不在我的public目录中的文件中使用。

进一步研究之后,似乎可能与跟踪目录树的方式有关,因为错误仅在子目录中引发。例如,require('express')在主目录app.js中的./中工作,但是在test.js的{​​{1}}中调用时失败。我感觉好像缺少了一些非常简单的事情,例如端点配置或其他东西。

我一直在搜索,但是似乎无法找到如何加载软件包的方法,最好不要使用cli。感谢任何指针。谢谢!

更新:进一步研究之后,尝试从同一目录中的另一个文件请求时,我也得到模块未定义的错误。例如,./subdirectory/test.js返回此错误。尝试module.exports = 'str'返回时,未定义require。可能与节点如何包装功能有关?

更新2:在require('./file')中尝试过"start": "npm install && node app.js",但是没有运气。添加在部署之前调用package.json的构建阶段也不起作用

更新3:在添加npm install构建阶段之后,我可以看到已经通过日志成功构建了依赖项。但是,未定义require的错误仍然存​​在。

更新4:即使存在所有软件包和依赖项,从CLI尝试npm安装也无法正常工作

更新5:运行npm install或通过cf restage配置缓存效果不佳

打开了有关部署here的相关问题

1 个答案:

答案 0 :(得分:0)

发现我的困惑是由于我没有意识到require()不能在客户端使用,除非通过Browserify之类的工具。