PNPM - 启动新项目无法按预期工作

15 浏览
0 Comments

PNPM - 启动新项目无法按预期工作

我正在尝试使用集中式的软件包管理器(pnpm)代替原始的npm,因为我喜欢在硬盘上保留空间。我只是尝试启动项目,但遇到了困难,网上几乎没有实际指导我如何使用这个软件包管理器启动项目的信息。有人有在React/React Native上使用它的经验吗?欢迎任何想法。

我尝试了两种不同的设置方式:

  • 使用pnpx create-react-app my-app创建一个新项目。这只是和npx create-react-app做的一样,包括安装我系统中已经有的200MB的模块。我检查了node_modules文件夹,没有文件是硬链接,都是模块本身。

  • 创建一个没有帮助命令的新项目(即创建App.js、index.js、index.html等文件),然后运行pnpm i react...等命令。这在某种程度上起作用了,所有的节点包都是链接到我的全局存储(在~/)中的,但是当我尝试运行pnpm start启动服务器时,出现错误:Cannot find module .../my-project/server.js。我没有server.js文件,但是使用常规的npm和npx命令,我从来没有需要过。

我尝试了pnpm i server来看是否可以让它工作。没有效果。我对React还比较新,所以我肯定做了一些荒谬的事情,但无论我是多么初级,我都遵循了官方指南,但它们对我没有起作用。

pnpm的调试文件显示如下:

{

"0 debug pnpm:scope": {

"selected": 1,

"workspacePrefix": null

},

"1 error pnpm": {

"message": {

"errno": 1,

"code": "ELIFECYCLE",

"pkgid": "[email protected]",

"stage": "start",

"script": "node server.js",

"pkgname": "my-cv"

},

"err": {

"name": "Error",

"message": "[email protected] start: `node server.js`\nExit status 1",

"code": "ELIFECYCLE",

"stack": "Error: [email protected] start: `node server.js`\nExit status 1\n at EventEmitter. (/usr/local/lib/node_modules/pnpm/lib/node_modules/@zkochan/npm-lifecycle/index.js:302:16)\n at EventEmitter.emit (events.js:200:13)\n at ChildProcess. (/usr/local/lib/node_modules/pnpm/lib/node_modules/@zkochan/npm-lifecycle/lib/spawn.js:55:14)\n at ChildProcess.emit (events.js:200:13)\n at maybeClose (internal/child_process.js:1021:16)\n at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)"

}

}

}

更新:所以我已经设法让它工作了,我认为...我在执行pnpm i之前,获得了所有在npx create-react-app中使用的所需包,并将它们放在了package.json中。然而,除了想知道是否可以不费太多劲就实现这一点之外,看着文件结构,除了我在node_modules文件夹中的别名之外,我似乎还有一个隐藏的文件夹.registry.npmjs.org。它和我在系统根目录下的那个是完全一样的,我原以为那是中央存储库。尽管pnpm似乎工作正常(别名在node_modules文件夹中创建了),但我仍然在系统上有重复的软件包。有人可以确认这是否是事实吗?

0