gulp:节点无法找到模块'vscode'

时间:2016-05-18 20:40:10

标签: visual-studio-code vscode-extensions

我正在开发VS代码的扩展,并且还针对该扩展使用的对象编写了一些测试。这些测试在VS Code中成功运行。但是,我也希望它们作为我的CI构建的一部分运行,我通过gulp来做。我有一个gulp任务,使用“gulp mocha”来运行测试。那些测试将通过gulp成功运行,直到我引入一个类,在它的模块引用的传递闭包中的任何地方,拉入'vscode'。

我的gulp输出如下:

[13:29:03] Starting 'test'...
[13:29:03] { [Error: Cannot find module 'vscode']
  code: 'MODULE_NOT_FOUND',
  name: 'Error',
  message: 'Cannot find module \'vscode\'',
  stack: 'Error: Cannot find module \'vscode\'\n    at
Function.Module._resolveFilename (module.js:325:15)\n    at
Function.Module._load (module.js:276:25)\n    at Module.require
(module.js:353:17)\n    at require (internal/module.js:12:17)\n    at 
Object.<anonymous> (C:\\vsts-vscode\\out\\src\\helpers\\settings.js:6:18)\n  
at Module._compile (module.js:397:26)\n    at
Object.Module._extensions..js    
(module.js:404:10)\n    at Module.load (module.js:343:32)\n    at
Function.Module._load (module.js:300:12)\n    at Module.require (module.js:353:17)',
showStack: true,
showProperties: true,
plugin: 'gulp-mocha' }
[13:29:03] 'test' errored after 212 ms
[13:29:03] Error in plugin 'gulp-mocha'
Message:
    Cannot find module 'vscode'
Details:
    code: MODULE_NOT_FOUND
Stack:
Error: Cannot find module 'vscode'
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (**C:\vsts-vscode\out\src\helpers\settings.js:6:18**)
    at Module._compile (module.js:397:26)
    at Object.Module._extensions..js (module.js:404:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)

在调用堆栈中,有一个对 src \ helpers \ settings.js:6:18 的引用。在那个位置是这个声明:

const vscode_1 = require("vscode");

在我的打字稿来源中,即:

import { workspace } from "vscode";

如果我只是删除引入我在settings.js中使用的命名空间的import语句,那么测试将恢复成功运行。

在完成有关node.js模块解析(https://nodejs.org/api/modules.html#modules_all_together)的文档后,我可以理解为什么会得到MODULE_NOT_FOUND。由于“vscode”不是核心模块而不是相对引用(“。”,“/”,“../”),因此节点将查找package.json文件。假设它找到它(procmon告诉我它确实),它寻找一个“主”字段。我猜,在这一点上,它找不到“主”字段并且无法解决问题。

据推测,当在VS Code中运行测试(工作正常)时,分辨率还包括定位文件(http://www.typescriptlang.org/docs/handbook/module-resolution.html)并因此成功。

我无法弄清楚当我通过gulp运行测试时,我可以做些什么来解决对“vscode”的引用。

有什么想法吗?

0 个答案:

没有答案