簡體   English   中英

運行鐵節點時module.js找不到模塊

[英]module.js cannot find modules when running iron-node

我正在嘗試使用鐵節點(v2.2.17)來調試我的摩卡單元測試。 當我從 package.json 運行此命令時,單元測試運行良好:

"test": "cross-env NODE_ENV=test mocha test/.setup.js --reporter progress --compilers js:babel-core/register --require babel-polyfill --recursive \"./src/**/*.spec.js\" \"./src/**/*.integrationSpec.js\" \"./test/**/*.spec.js\"",

但是,當我運行此命令時,測試失敗:

"debug:test": "cross-env NODE_ENV=test iron-node node_modules\\mocha\\bin\\_mocha test/.setup.js --reporter progress --compilers js:babel-core/register --require babel-polyfill --recursive \"./src/**/*.spec.js\" \"./src/**/*.integrationSpec.js\" \"./test/**/*.spec.js\"",

控制台中的錯誤是:

Error: Cannot find module 'src/framework/api/entityAddresses/entityAddressesAc  tions'

  - module.js:16 require
    internal/module.js:16:19

  - entityAddressesActions.spec.js:5 Object.<anonymous>
    entityAddressesActions.spec.js:5:1

該模塊位於C:\\TFS\\Dev-UI\\WebApp\\Src\\Web\\Web\\src\\framework\\api\\entityAddresses\\entityAddressesActions.js

我的項目文件夾是C:\\TFS\\Dev-UI\\WebApp\\Src\\Web\\Web並且我的process.env.NODE_PATH也是C:\\TFS\\Dev-UI\\WebApp\\Src\\Web\\Web (它是未定義的,但我在我的.iron-node.js中將它設置為process.cwd() - 請參閱https://github.com/sa/iron-node/issues/98#issuecomment-218658236

我無法弄清楚為什么找不到模塊。 我錯過了一些配置嗎?

編輯

這個 SO 答案建議一旦應用程序啟動就設置process.env.NODE_PATH將不起作用,因為模塊路徑被緩存: 從正在運行的 node.js 應用程序確定項目根

我不知道如何在鐵節點啟動之前設置它,它總是未定義的

問題可以通過 .iron-node.js 配置文件解決:

process.env.NODE_PATH = process.cwd(); // fix problem where modules are not resolved - Jack Allan.
var path = require("path");
var settings = {
  "nodeModule" : {
     "scriptInjection" : "module.paths.push(process.env.NODE_PATH);",  // fix problem where modules are not resolved - Jack Allan.
  },
  "v8": {
    "flags" : [                             // DEFAULT=[]; https://github.com/thlorenz/v8-flags/blob/master/flags-0.11.md
    ]
  },
  "app": {
    "native+"               : false,   // DEFAULT=FALSE; extends require to search native modules respecting the current v8 engine version.
    "autoAddWorkSpace"      : false,  // DEFAULT=TRUE; disables the autoAddWorkSpace behavior.
    "openDevToolsDetached"  : false,  // DEFAULT=FALSE; opens the dev tools windows detached in an own window.
    "hideMainWindow"        : false,  // DEFAULT=FALSE;  hides the main window to show dev tools only.
  },
  "workSpaceDirectory"        : function(argv) {  // determines the workspace directory for specific commandline applications.
    var result = "";
    if (argv[2]){
      result = path.dirname(argv[2]);
      var startupScriptName = path.basename(argv[2]).toLowerCase();

      switch(startupScriptName) {
          case "_mocha":
            result = process.cwd();
            break;
          default:
            result = path.resolve(result);
            break;
      }
    }

    return result;
  }
};

module.exports = settings;

感謝 sa 提出這個建議: https : //github.com/sa/iron-node/issues/98#issuecomment-218712907

暫無
暫無

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

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