我在https://github.com/AkashGutha/generator-stencil为 stenciljs 编写生成器
我有一个位于项目根目录的小型实用程序函数。它只是一个utils/composeObjects.js
导出一个函数的文件composeObjs
。我在生成器的所有子生成器中都使用了这个函数。我在这些地方使用它:
app/index.js
page/index.js
component/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 函数,并且在全局安装时它们工作正常。
我也怀疑这可能是因为运行的主模块是 main yeoman
,因为yo stencil
告诉yeoman cli
使用它generator
。
我需要摆脱这个错误也将是 niec 了解导致此模块错误的原因。
这是 github 问题:https ://github.com/AkashGutha/generator-stencil/issues/1