Windows 10,运行jest时无法找到现有的binding.node文件

时间:2018-04-09 08:56:07

标签: javascript node.js windows-10 electron jest

在运行Windows 10时,在appveyor上以及作为虚拟机,我在为我的电子应用程序运行jest测试时会出现同样的错误。

 The specified module could not be found.
    \\?\C:\Users\User\peruse\app\node_modules\ref\build\Release\binding.node
      Error: The specified module could not be found.
      \\?\C:\Users\User\peruse\app\node_modules\ref\build\Release\binding.node
      at Runtime.requireModule (node_modules/jest-runtime/build/index.js:263:31)
      at bindings (app/node_modules/bindings/bindings.js:76:44)
      at Object.<anonymous> (app/node_modules/ref/lib/ref.js:5:47)

https://ci.appveyor.com/project/joshuef/peruse/build/1.0.733/job/fwflo19to9rvt085#L4664

事情是......文件本身存在,正如运行:

所确认的那样
dir  \\?\C:\Users\User\peruse\app\node_modules\ref\build\Release\binding.node 

导致:

-a----         4/9/2018   1:44 AM         157696 binding.node

应用程序本身运行正常(它是一个电子应用程序,通过webpack编译)。只有在对本机库运行测试时才会出现此错误。而且只在窗户中。 (osx / linux测试运行正常。)

我尝试使用npm代替yarn进行重建,通过命令行重新安装vs2017工具......我在这两个系统上始终遇到此错误(这是某些东西),但我很难接受下一步尝试...

正在从命令行运行Jest。

Jest配置如此:

module.exports = {
    verbose                : true,
    moduleFileExtensions   : ['js', 'jsx', 'json'],
    setupFiles   : ['raf/polyfill','<rootDir>/test/setup.js'],
    testPathIgnorePatterns : ['node_modules'],
    moduleDirectories      : ['app', 'test', 'node_modules', 'app/node_modules'],
    moduleNameMapper       : {
        "electron": "<rootDir>/mocks/electron.js",
        "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$":
        "<rootDir>/mocks/fileMock.js",
        "\\.(css|scss)$": "<rootDir>/mocks/fileMock.js",
        '^appPackage$'      : '<rootDir>/package.json',
        '^@actions(.*)$'    : '<rootDir>/app/actions$1',
        '^@components(.*)$' : '<rootDir>/app/components$1',
        '^@containers(.*)$' : '<rootDir>/app/containers$1',
        '^appConstants$'  : '<rootDir>/app/constants.js',
        '^@extensions(.*)$' : '<rootDir>/app/extensions$1',
        '^@logger$'     : '<rootDir>/app/logger.js',
        '^@reducers(.*)$'   : '<rootDir>/app/reducers$1',
        '^@store(.*)$'      : '<rootDir>/app/store',
        '^@utils(.*)$'      : '<rootDir>/app/utils$1'
    }
};

the appveyor config file is here

任何指示/想法/事物要检查超级赞赏。如果需要更多的代码说明,请告诉我。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我在Windows 10上的ibm_db模块上遇到了类似的错误(但在Linux Docker容器中却没有):

The specified module could not be found.
\\?\C:\_projects\projectName\node_modules\ibm_db\build\Release\odbc_bindings.node

  at Runtime._loadModule (node_modules/jest-runtime/build/index.js:572:29)
  at bindings (node_modules/bindings/bindings.js:112:48)

找到了解决方法here

  1. IBM site下载odbc驱动程序。您可能需要注册 为此,在IBM。
  2. 只需提取以下内容即可安装此odbc驱动程序: 您下载到某个文件夹的软件包的内容,用于 例如“ C:\ IBMDB2 \ CLIDRIVER \”
  3. 设置IBM_DB_HOME环境变量,使其指向带有驱动程序的文件夹。 ( 至 如果使用该路径,则为“ C:\ IBMDB2 \ CLIDRIVER \”)
  4. 在“ PATH”环境变量中添加“%IBM_DB_HOME%\ bin”路径。
  5. 重新启动或发出/登录,以便对PATH的更改生效。
  6. 使用“ npm install”重新安装软件包,因为所有这些环境变量仅在软件包安装阶段使用。