gpt4 book ai didi

node.js - 将 Node.js 模块导入 Intern 测试时出错

转载 作者:太空宇宙 更新时间:2023-11-03 21:59:02 25 4
gpt4 key购买 nike

我正在尝试使用 Intern 来测试我们的 Node.js 模块。我已将其设置为运行空测试,甚至 require Node 模块,但是当我尝试 require 包中的模块之一时,我收到错误:

/path/to/app/node_modules/path/path.js:327
var path = (i >= 0) ? arguments[i] : process.cwd();
^
TypeError: undefined is not a function
at Object.exports.resolve (/path/to/app/node_modules/path/path.js:327:52)
at Object.exports.relative (/path/to/app/node_modules/path/path.js:405:20)
at getSource (/path/to/app/node_modules/intern/lib/util.js:368:21)
at formatLine (/path/to/app/node_modules/intern/lib/util.js:405:40)
at processChromeTrace (/path/to/app/node_modules/intern/lib/util.js:418:16)
at normalizeStackTrace (/path/to/app/node_modules/intern/lib/util.js:470:38)
at Object.getErrorMessage (/path/to/app/node_modules/intern/lib/util.js:597:14)
at PreExecutor._handleError (/path/to/app/node_modules/intern/lib/executors/PreExecutor.js:256:24)
at /path/to/app/node_modules/intern/node_modules/dojo/lang.js:78:32
at process.<anonymous> (/path/to/app/node_modules/intern/lib/executors/PreExecutor.js:302:6)

文件夹结构为:

  • src/
    • **/*.咖啡
  • 测试
    • 单位/**/*.coffee
    • 实习生.js
  • js/(coffeescript在这里编译)
    • src/
      • **/*.js
    • 测试/
      • **/*.js
      • all.js(通过汇总 /js/tests 下其他测试的名称进行编译)
  • Node 模块

这是我的 intern.js:

define({
capabilities: {
'browserstack.selenium_version': '2.45.0'
},

environments: [
{browserName: 'internet explorer', version: '11', platform: 'WIN8'},
{browserName: 'internet explorer', version: '10', platform: 'WIN8'},
{browserName: 'internet explorer', version: '9', platform: 'WINDOWS'},
{browserName: 'firefox', version: '37', platform: ['WINDOWS', 'MAC']},
{browserName: 'chrome', version: '39', platform: ['WINDOWS', 'MAC']},
{browserName: 'safari', version: '8', platform: 'MAC'}
],

maxConcurrency: 2,
tunnel: 'BrowserStackTunnel',
loaderOptions: {
packages: [{name: 'app', location: 'js/src'}]
},
reporters: ['Console', 'Lcov'],
suites: ['js/tests/unit/all'],
excludeInstrumentation: /^(?:\.npm|js\/tests|src|tests|node_modules)\//
});

我的测试只是:

define (require) ->
registerSuite = require('intern!object')
assert = require('intern/chai!assert')
SchemaBuilder = require('intern/dojo/node!app/path/to/Module')

registerSuite
name: 'Testing'

'test': ->

从项目根目录运行'./node_modules/.bin/intern-client config=tests/intern'

这是我的代码、配置、环境或实习生的问题吗?

我尝试过 Node.js v0.12.0 和 v0.12.7。

最佳答案

有趣的是,从我的应用程序依赖项 (package.json) 中删除 path 模块解决了(好吧,避免了)undefined is not a function 错误,似乎又回到了实习生自己的路径解析上。我真的不知道为什么,但这似乎是一个错误。

这出现了一个新的、更容易处理的错误:Error: Cannot find module 'app/path/to/Module',表明 require() 中的路径是完全错误。

我认为问题是 intern/dojo/node 加载器不支持 loaderOptions: {packages: [{name: 'app', location: 'js/src '}]} 配置,因此它正在搜索相对于测试模块的 app 目录。如果我将 app/ 替换为 ../../../../js/src/ 那么它就会解析并按预期工作。

这有点难看,但这是在 Node 中要求本地文件的标准方式,所以这也不太奇怪,我只是希望 Intern 的加载器可以使它更干净。

关于node.js - 将 Node.js 模块导入 Intern 测试时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32473471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com