Meteor 找不到本地 npm 模块
Meteor can't find local npm module
我正在开发一些与我的 Meteor 应用程序并行的 npm 包。
第一个已完成,它的测试和构建 运行 没有错误。
我想使用本地路径在我的流星项目 (myproject
) 中安装我的包 (mypackage
):
cd myproject
meteor npm install --save ../lib/mypackage
请注意,它存在于 Meteor 项目之外的 lib
文件夹中。这似乎安装了包,因为它输出
+ mypackage@0.0.1
added 1 package in 12.475s
查看 node_modules 文件夹时它也存在,但它只是作为(软?)link:
cd node_modules && ls -la | grep mypackage
lrwxr-xr-x 1 user group 22 26 Jan 11:02 mypackage -> ../../lib/mypackage
问题来了:当 运行 我的项目或我的测试时,我收到以下行的错误:
import { SomeClass } from 'mypackage';
错误是:
W20180126-11:07:08.933(1)? (STDERR) Error: Cannot find module 'mypackage'
W20180126-11:07:08.933(1)? (STDERR) at Function.Module._resolveFilename (module.js:536:15)
W20180126-11:07:08.933(1)? (STDERR) at Function.resolve (internal/module.js:18:19)
W20180126-11:07:08.933(1)? (STDERR) at Object.require (/private/var/folders/q_/nyqwc8q55qx3c_153hvt8zy00000gn/T/meteor-test-runqigr0c.jhjdg/.meteor/local/build/programs/server/boot.js:287:32)
W20180126-11:07:08.934(1)? (STDERR) at makeInstallerOptions.fallback (packages/modules-runtime.js:651:18)
W20180126-11:07:08.934(1)? (STDERR) at require (packages/modules-runtime.js:244:16)
W20180126-11:07:08.934(1)? (STDERR) at collections.tests.js (imports/startup/both/collections.tests.js:1:306)
W20180126-11:07:08.935(1)? (STDERR) at fileEvaluate (packages/modules-runtime.js:343:9)
W20180126-11:07:08.935(1)? (STDERR) at require (packages/modules-runtime.js:238:16)
W20180126-11:07:08.935(1)? (STDERR) at /private/var/folders/q_/nyqwc8q55qx3c_153hvt8zy00000gn/T/meteor-test-runqigr0c.jhjdg/.meteor/local/build/programs/server/app/app.js:7933:1
W20180126-11:07:08.935(1)? (STDERR) at infos.forEach.info (/private/var/folders/q_/nyqwc8q55qx3c_153hvt8zy00000gn/T/meteor-test-runqigr0c.jhjdg/.meteor/local/build/programs/server/boot.js:414:13)
我尝试使用绝对路径解决此问题,但没有帮助。有人遇到过这个问题吗?
有一个特殊的 npm 功能可以做到这一点,称为 npm link
它允许您优先使用本地包而不是已发布的版本。您首先需要在包本身的源代码中添加 npm link
(以使其可用)
然后在您的项目中再次执行此操作,但命名包,例如 npm link my-package
更多信息在这里:
我最近使用 mui-rte
npm 包,我需要进行一些更改,因此将其分叉并尝试在本地安装。以下是让它发挥作用的步骤。
转到 mui-rte
本地文件夹,运行 npm run build
在 mui-rte
文件夹中,运行 npm link
进入项目文件夹,运行npm link mui-rte
有效。感谢@Mikkel link。 @Jankapunkt 我也在使用 Meteor。
我正在开发一些与我的 Meteor 应用程序并行的 npm 包。
第一个已完成,它的测试和构建 运行 没有错误。
我想使用本地路径在我的流星项目 (myproject
) 中安装我的包 (mypackage
):
cd myproject
meteor npm install --save ../lib/mypackage
请注意,它存在于 Meteor 项目之外的 lib
文件夹中。这似乎安装了包,因为它输出
+ mypackage@0.0.1
added 1 package in 12.475s
查看 node_modules 文件夹时它也存在,但它只是作为(软?)link:
cd node_modules && ls -la | grep mypackage
lrwxr-xr-x 1 user group 22 26 Jan 11:02 mypackage -> ../../lib/mypackage
问题来了:当 运行 我的项目或我的测试时,我收到以下行的错误:
import { SomeClass } from 'mypackage';
错误是:
W20180126-11:07:08.933(1)? (STDERR) Error: Cannot find module 'mypackage'
W20180126-11:07:08.933(1)? (STDERR) at Function.Module._resolveFilename (module.js:536:15)
W20180126-11:07:08.933(1)? (STDERR) at Function.resolve (internal/module.js:18:19)
W20180126-11:07:08.933(1)? (STDERR) at Object.require (/private/var/folders/q_/nyqwc8q55qx3c_153hvt8zy00000gn/T/meteor-test-runqigr0c.jhjdg/.meteor/local/build/programs/server/boot.js:287:32)
W20180126-11:07:08.934(1)? (STDERR) at makeInstallerOptions.fallback (packages/modules-runtime.js:651:18)
W20180126-11:07:08.934(1)? (STDERR) at require (packages/modules-runtime.js:244:16)
W20180126-11:07:08.934(1)? (STDERR) at collections.tests.js (imports/startup/both/collections.tests.js:1:306)
W20180126-11:07:08.935(1)? (STDERR) at fileEvaluate (packages/modules-runtime.js:343:9)
W20180126-11:07:08.935(1)? (STDERR) at require (packages/modules-runtime.js:238:16)
W20180126-11:07:08.935(1)? (STDERR) at /private/var/folders/q_/nyqwc8q55qx3c_153hvt8zy00000gn/T/meteor-test-runqigr0c.jhjdg/.meteor/local/build/programs/server/app/app.js:7933:1
W20180126-11:07:08.935(1)? (STDERR) at infos.forEach.info (/private/var/folders/q_/nyqwc8q55qx3c_153hvt8zy00000gn/T/meteor-test-runqigr0c.jhjdg/.meteor/local/build/programs/server/boot.js:414:13)
我尝试使用绝对路径解决此问题,但没有帮助。有人遇到过这个问题吗?
有一个特殊的 npm 功能可以做到这一点,称为 npm link
它允许您优先使用本地包而不是已发布的版本。您首先需要在包本身的源代码中添加 npm link
(以使其可用)
然后在您的项目中再次执行此操作,但命名包,例如 npm link my-package
更多信息在这里:
我最近使用 mui-rte
npm 包,我需要进行一些更改,因此将其分叉并尝试在本地安装。以下是让它发挥作用的步骤。
转到
mui-rte
本地文件夹,运行npm run build
在
mui-rte
文件夹中,运行npm link
进入项目文件夹,运行
npm link mui-rte
有效。感谢@Mikkel link。 @Jankapunkt 我也在使用 Meteor。