Node Jitsu无法找到本地模块。

5

我有一个应用程序在本地成功运行,所以我知道代码是可行的。但是当我尝试部署到node jitsu时,出现了一个错误,它无法找到本地模块。以下是我的设置:

文件设置:

/index.js
/config/config.js

index.js

var cfg = require('./config/config.js');

尝试部署时,node jitsu 给了我一个错误:
Error: Cannot find module './config/config.js'

由于所有这些代码在本地运行,所以我不认为这是一个编码问题。我的理解是本地模块不需要包含在package.json中,但是可能对于node jitsu而言需要吗?我阅读了他们的文档,但没有找到任何有关本地模块的特殊说明。

谢谢!

2个回答

11

只要不将其放在 .gitignore.npmignore 中,像这样的本地模块应该正常工作。

node_modules 目录中的模块需要在你的 package.json 文件的 bundledDependencies 数组中添加它。

检查文件是否包含在部署中的简单方法是运行 tar -tf $(npm pack)


.gitignore 文件中列出了 config.js 文件名。将其从 .gitignore 文件中移除后,问题得到解决。谢谢! - nwkeeley
2
如果您希望将某些内容保留在.gitignore中,并且仅允许在.npmignore文件中,则可以添加一个.npmignore文件。.npmignore文件的格式与.gitignore相同,因此简单的!./config/config.js就可以实现这一功能。 - Sly

3
我曾经在部署时遇到过完全相同的错误,但是原因不同。如果有人遇到相同的问题,请参考以下内容: 文件设置:
/public/Data/TargetData.js

app.js 的 require 语句:

var target = require('./public/data/TargetData.js');

我的本地Mac OSX环境允许 /data//Data/ 大小写不同 - Nodejitsu服务器不允许。


谢谢你发布这个,省了我很多时间。 - Collin Estes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接