簡體   English   中英

node.js require 找不到自定義模塊

[英]node.js require cannot find custom module

這是項目結構:

/
  app.js
  package.json
  /node_modules
  /app
    config.json
    /frontend
      assets and html tpls
    /modules
      couch.js
      raeume.js
      users.js

我需要來自 app.js 的 config.json、raeume.js 和 users.js,一切正常。

var config   = require('./app/config');
var raeume   = require('./app/modules/raeume');
var users    = require('./app/modules/users');

然后我以相同的方式從 user.js 中獲取 config.json 和 couch.js,但它找不到任何東西。

var couch     = require('./app/modules/couch');
var config    = require('./app/config');

我想它應該能找到它。 經過一些研究,我看到了各種各樣的問題,包括如何編譯節點。 因此包括:我在 osx 10.8 上工作,節點 v0.10.7。

該路徑相對於您require文件的目錄,因此它應該類似於:

var couch = require('./couch');
var config = require('../config');

有點澄清,如果你寫

var couch = require('./couch');

你正試圖require駐留在當前目錄中的沙發模塊,如果你寫

var couch = require('couch');

您試圖require通過npm安裝沙發模塊。

這是你如何做到的:

var users    = require('./../modules/users');

一定是:

var config = require(../../app/config)

var couch = require(./couch) (same directory)

當前接受的答案是正確的,並正確回答了問題。

雖然與原始問題沒有直接關系,但我想在這里為所有那些雖然指定了正確的相對路徑但收到本地文件Cannot find module錯誤的人補充一點。

假設當前目錄中存在一個名為couch.js的文件,

  • 在不區分大小寫的文件系統(如 Windows 上的 NTFS)上,這兩行都可以使用 -

     var couch = require('./couch'); var couch = require('./Couch');
  • 但是,在區分大小寫的文件系統(如 Linux 上的 ext4)上, require('./couch')可以工作,但require('./Couch')不行。

NodeJS 文檔中一個關於此的頁面

我希望這可以幫助那些在從 Windows/Mac 遷移到 Linux 后完美運行的代碼停止工作的人。 😅

還要仔細檢查正在導入的文件的擴展名。 我不小心在 JavaScript 項目中使用了.ts ,這導致它無法被發現。 一旦我將擴展名更改為.jsrequire就能夠很好地找到它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM