NPM packages not found

NPM packages not found

NPM packages not found

📝 内容来源

NPM packages not found. Please confirm npm packages which need to build are belong to miniprogramRoot directory. Or you may edit project.config.json’s packNpmManually and packNpmRelationList
appid: wx429151859caeb046
openid: o6zAJsws4oaOjHasDK8qBirpUw8Q
ideVersion: 2.01.2510290
osType: win32-x64

开发者工具找不到需要构建的 npm 包。

微信web开发者工具:wechat_devtools_2.01.2510290_win32_x64.exe

IDE 版本(2.01.2510290),这套新版的配置方式确实需要特别注意。

🎯根本原因

project.config.json 中可能同时存在 miniprogramRoot 配置,而 packNpmRelationList 中的路径没有与之匹配,导致工具找不到 node_modules

✅ 解决方案(三步走)

第一步:确认项目结构

典型的微信小程序项目结构:

1
2
3
4
5
6
你的项目文件夹/
├── miniprogram/ ← 小程序代码(app.json, pages/ 等)
├── node_modules/ ← npm 包(安装后自动生成)
├── package.json
├── project.config.json
└── ...

如果 miniprogram/ 存在,说明 miniprogramRoot 已经指向了 miniprogram 文件夹。

第二步:修改 project.config.json(关键)

project.config.json 中,按以下方式配置,注意 miniprogramNpmDistDir 的值要根据你的实际 miniprogramRoot 来调整。

1
2
3
4
5
6
7
8
9
10
11
12
13
{
// 假设你的代码在 miniprogram 文件夹
\"miniprogramRoot\": \"miniprogram/\",
\"setting\": {
\"packNpmManually\": true,
\"packNpmRelationList\": [
{
\"packageJsonPath\": \"./package.json\",
\"miniprogramNpmDistDir\": \"./miniprogram/\"
}
]
}
}

关键点说明:

字段 含义
miniprogramRoot "miniprogram/" 小程序代码文件夹
packageJsonPath "./package.json" package.json 在项目根目录
miniprogramNpmDistDir "./miniprogram/" 构建后的 miniprogram_npm 在 miniprogram/ 下面,小程序能引用
💡 如果你的小程序代码直接在根目录(没有 miniprogram/ 文件夹),那么 miniprogramRoot 应该是 "./",miniprogramNpmDistDir 也设为 "./" 即可。

第三步:重新构建

保存 project.config.json 文件。

点击微信开发者工具菜单栏:工具 -> 构建 npm

等待构建完成,项目根目录(或 miniprogram/ 下)会出现 miniprogram_npm 文件夹。

🔧 “杀手锏”

如果还是报错,试试这个“杀手锏”。

有些情况下,开发者工具缓存了旧配置,导致新配置不生效。可以这样做:

完全关闭微信开发者工具。

手动删除项目下的 miniprogram_npm 文件夹(如果有)。

重新打开开发者工具,先不要点击构建 npm

先点击菜单栏 项目 -> 重新打开此项目,让工具重新加载所有配置。

然后再点击 工具 -> 构建 npm

修改后的 project.config.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
{
\"miniprogramRoot\": \"miniprogram/\",
\"cloudfunctionRoot\": \"cloudfunctions/\",
\"setting\": {
\"urlCheck\": true,
\"es6\": true,
\"enhance\": true,
\"postcss\": true,
\"preloadBackgroundData\": false,
\"minified\": true,
\"newFeature\": true,
\"coverView\": true,
\"nodeModules\": false,
\"autoAudits\": false,
\"showShadowRootInWxmlPanel\": true,
\"scopeDataCheck\": false,
\"uglifyFileName\": false,
\"checkInvalidKey\": true,
\"checkSiteMap\": true,
\"uploadWithSourceMap\": true,
\"compileHotReLoad\": false,
\"useMultiFrameRuntime\": true,
\"useApiHook\": true,
\"useApiHostProcess\": true,
\"babelSetting\": {
\"ignore\": [],
\"disablePlugins\": [],
\"outputPath\": \"\"
},
\"enableEngineNative\": false,
\"useIsolateContext\": true,
\"useCompilerModule\": true,
\"userConfirmedUseCompilerModuleSwitch\": false,
\"userConfirmedBundleSwitch\": false,
\"packNpmManually\": true,
\"packNpmRelationList\": [
{
\"packageJsonPath\": \"./package.json\",
\"miniprogramNpmDistDir\": \"./miniprogram/\"
}
],
\"minifyWXSS\": true,
\"compileWorklet\": false,
\"minifyWXML\": true,
\"localPlugins\": false,
\"disableUseStrict\": false,
\"useCompilerPlugins\": false,
\"condition\": false,
\"swc\": false,
\"disableSWC\": true
},
\"appid\": \"wx429151859caeb046\",
\"projectname\": \"quickstart-wx-cloud\",
\"libVersion\": \"3.17.0\",
\"cloudfunctionTemplateRoot\": \"cloudfunctionTemplate/\",
\"condition\": {
\"search\": {
\"list\": []
},
\"conversation\": {
\"list\": []
},
\"plugin\": {
\"list\": []
},
\"game\": {
\"list\": []
},
\"miniprogram\": {
\"list\": [
{
\"id\": -1,
\"name\": \"db guide\",
\"pathName\": \"pages/databaseGuide/databaseGuide\"
}
]
}
},
\"compileType\": \"miniprogram\",
\"srcMiniprogramRoot\": \"miniprogram/\",
\"packOptions\": {
\"ignore\": [],
\"include\": []
},
\"editorSetting\": {
\"tabIndent\": \"insertSpaces\",
\"tabSize\": 2
},
\"simulatorPluginLibVersion\": {}
}