【发布时间】:2018-04-07 08:12:21
【问题描述】:
我正在为 https://github.com/AkashGutha/generator-stencil 编写一个 stenciljs 生成器
我有一个位于项目根目录的小型实用程序函数。只是一个文件utils/composeObjects.js 导出了一个函数composeObjs。我在生成器的所有子生成器中都使用了这个函数。我在这些地方使用它:
app/index.jspage/index.jscomponent/index.js
我正在使用npm link 在本地测试我的生成器,然后当我在一个空文件夹中执行yo stencil 时,生成器可以正常工作。
但是,当我 npm publish 它并尝试运行 yo stencil 时,它会引发以下错误。
module.js:538
throw err;
^
Error: Cannot find module '../utils/composeObjects'
at Function.Module._resolveFilename (module.js:536:15)
at Function.Module._load (module.js:466:25)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/Users/Akash/.npm-global/lib/node_modules/generator-stencil/app/index.js:5:21)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
经过搜索,我发现在全局安装软件包时 require 无法按预期工作。但是,我查看了 github 上的其他一些生成器,其中一些使用了某种 util 函数,并且在全局安装时它们工作正常。
我也怀疑这可能是因为运行的主模块是主yeoman,因为yo stencil 告诉yeoman cli 使用那个generator。
我需要摆脱这个错误,也需要 niec 了解导致这个模块错误的原因。
这里是 github 问题:https://github.com/AkashGutha/generator-stencil/issues/1
【问题讨论】:
标签: javascript node.js yeoman yeoman-generator stenciljs