为什么全局 npm 包不启动模块依赖?
Why does not the global npm package kick in for module dependency?
我已经在全球范围内安装了 typescript 和 ts-node。
我有一个如下所示的 package.json 文件,当我 运行 npm test
时,一切正常(注意:如你所愿看,ts-node
和 typescript
在这种情况下作为本地模块安装)
{
"name": "two_sum",
"version": "1.0.0",
"description": "two sum problem solver",
"main": "main.js",
"scripts": {
"test": "./node_modules/.bin/mocha --compilers ts:ts-node/register ./test/*.spec.ts"
},
"devDependencies": {
"chai": "^4.1.2",
"mocha": "^4.1.0",
"ts-node": "^4.1.0",
"typescript": "^2.6.2"
}
}
但是,如果我从 package.json 中取出两个模块(并从我的 ./mode_modules 中删除这两个包),即 ts-node
和 typescript
没有在本地安装,我得到这样的错误:
Error: Cannot find module 'typescript'
at Function.Module._resolveFilename (module.js:470:15)
....
at Module._compile (module.js:571:32)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:427:7)
at startup (bootstrap_node.js:151:9)
at bootstrap_node.js:542:3
npm ERR! Test failed. See above for more details.
这是我的问题:为什么我需要在本地安装这两个软件包?为什么全局包不能启动来解决依赖?
当您的代码运行时,全局安装的包不参与解析。
这是因为该项目(由您的 package.json 表示)不知道全局安装了什么。
全局安装的包与环境相关,与项目无关。
如果在解决方案中使用全局安装的包,则该项目可能在您的环境中运行,但在其他环境中不运行。
这样会使你的项目的可执行性不可靠(或者说,耦合或依赖于你的环境)。
如今,仅为 CLI 工具安装全局包。
我已经在全球范围内安装了 typescript 和 ts-node。
我有一个如下所示的 package.json 文件,当我 运行 npm test
时,一切正常(注意:如你所愿看,ts-node
和 typescript
在这种情况下作为本地模块安装)
{
"name": "two_sum",
"version": "1.0.0",
"description": "two sum problem solver",
"main": "main.js",
"scripts": {
"test": "./node_modules/.bin/mocha --compilers ts:ts-node/register ./test/*.spec.ts"
},
"devDependencies": {
"chai": "^4.1.2",
"mocha": "^4.1.0",
"ts-node": "^4.1.0",
"typescript": "^2.6.2"
}
}
但是,如果我从 package.json 中取出两个模块(并从我的 ./mode_modules 中删除这两个包),即 ts-node
和 typescript
没有在本地安装,我得到这样的错误:
Error: Cannot find module 'typescript'
at Function.Module._resolveFilename (module.js:470:15)
....
at Module._compile (module.js:571:32)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:427:7)
at startup (bootstrap_node.js:151:9)
at bootstrap_node.js:542:3
npm ERR! Test failed. See above for more details.
这是我的问题:为什么我需要在本地安装这两个软件包?为什么全局包不能启动来解决依赖?
当您的代码运行时,全局安装的包不参与解析。
这是因为该项目(由您的 package.json 表示)不知道全局安装了什么。
全局安装的包与环境相关,与项目无关。
如果在解决方案中使用全局安装的包,则该项目可能在您的环境中运行,但在其他环境中不运行。
这样会使你的项目的可执行性不可靠(或者说,耦合或依赖于你的环境)。
如今,仅为 CLI 工具安装全局包。