【问题标题】:Depending on lots of npm from vscode module…?依赖于来自 vscode 模块的大量 npm ......?
【发布时间】:2016-06-18 07:34:44
【问题描述】:

我刚刚开始尝试将 Ensime scala ide-support 集成到 vscode 中。我已经从我的 atom 包 https://github.com/ensime/ensime-atom 中提取了一些集成部分到 https://github.com/ensime/ensime-node 中。

但是,当依赖于 vscode 中的这个时,我会得到红色的波浪线,无法找到它:

但是,代码仍然可以正常构建和运行。我很担心。我发现了这个:

问:我可以在我的扩展中使用原生 Node.js 模块吗?

答:Visual Studio Code 扩展包包含其所有 依赖关系。这意味着如果你在 Windows 上开发你的扩展 并在发布该扩展时依赖本机 Node.js 模块, Windows 编译的本机依赖项将包含在您的 延期。 OS X 或 Linux 上的用户将无法使用该扩展。

目前使这项工作正常进行的唯一方法是为所有人包含二进制文件 您的 VS Code 的四个平台(Windows x86 和 x64、Linux、OS X) 扩展并具有动态加载正确的代码。

这是什么意思?我不能使用 fs、net、child_process 之类的?我认为它们都需要它们,还是 vscode 通过抽象层提供所有这些?

【问题讨论】:

    标签: node.js scala npm visual-studio-code ensime


    【解决方案1】:

    您确实已经将基本节点模块(fs 等)包含在 vscode 本身的依赖项中。

    您是否记得在您的 package.json 文件中包含此模块作为依赖项?

    检查这一点的一种方法是清理您的代码,将其放在一个新文件夹中,然后运行“npm install” - 如果一切正常,您就可以开始了。

    请参阅此文档: https://code.visualstudio.com/Docs/extensionAPI/extension-manifest

    请务必阅读最新版本中的新扩展创作更新:https://code.visualstudio.com/Updates

    【讨论】:

    • 是的,它在 package.json 和 node_modules 中,它确实可以运行。但是我在vscode中报错还是摆脱不掉。
    • 但是我可以依赖一个依赖说 child_process 的包吗?我认为在 atom 的情况下 apm rebuild 修复了什么?
    • 如果你的包的依赖写得正确,它们都会被包含进来。我自己有一个使用 child_process 的扩展
    • 好的,很酷。我想我看到了麻烦。我猜这句话的意思是,确保标准节点模块是由引擎提供的(例如 child_process),但是如果您依赖于与 node-gyp 交叉构建的任何东西,例如不属于节点标准安装的一部分,那将在发布时打包在您的捆绑包中,然后您就搞砸了。我想我有一些,比如用于文件观看的 chokidar。如果我从我的 mac 发布,我的包会在 Windows 上爆炸。
    猜你喜欢
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 2018-03-18
    • 1970-01-01
    相关资源
    最近更新 更多