【问题标题】:Meteor can't find local npm moduleMeteor 找不到本地 npm 模块
【发布时间】:2018-07-05 16:17:04
【问题描述】:

我正在开发一些与 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 文件夹时,它也存在,但它仅作为(软?)链接:

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)

我尝试使用绝对路径解决此问题,但没有帮助。有人遇到过这个问题吗?

【问题讨论】:

    标签: meteor npm packages importerror


    【解决方案1】:

    我最近使用mui-rte npm 包,我需要进行一些更改,因此将它分叉并尝试在本地安装。以下是使其工作的步骤。

    1. 转到mui-rte本地文件夹,运行npm run build

    2. mui-rte文件夹内,运行npm link

    3. 进入项目文件夹,运行npm link mui-rte

    它有效。感谢@Mikkel 提供链接。 @Jankapunkt 我也在使用 Meteor。

    【讨论】:

      【解决方案2】:

      有一个特殊的 npm 功能可以做到这一点,称为 npm link

      它允许您优先使用本地包而不是已发布版本。您首先需要在包本身的源代码中添加一个npm link(以使其可用)

      然后在您的项目中再次执行此操作,但命名包,例如npm link my-package

      更多信息在这里:

      https://docs.npmjs.com/cli/link

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-26
        • 2017-01-12
        • 2019-12-12
        • 2020-06-26
        • 2022-07-26
        • 1970-01-01
        • 2016-06-17
        • 2017-03-12
        相关资源
        最近更新 更多