我有一个在本地构建良好的 Node 项目,并且历史上在 GitLab CI/CD 服务器上构建没有任何问题。然而,突然,管道构建在服务器上失败,并且代码没有更改。我什至为过去构建良好的过去提交打开了几个分支,但它们也在服务器上失败了。
我主要是想理解这个错误的“含义”:
const resolvedOption = FSLegacyMainResolve(packageJsonUrlString, packageConfig.main, baseStringified);
^
TypeError: The URL must be of scheme file: <etc...>
我必须假设构建环境中发生了一些变化,它无法突然下拉包或类似的情况,但没有任何具体的问题可能是什么。我正在寻找有关为什么会发生这种情况的指示,以及可能如何排除故障。
构建服务器上日志的相关错误是:
$ npm install
added 362 packages, and audited 363 packages in 17s
47 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
$ echo "Compile complete."
Compile complete.
$ npm run build
> [email protected] build
> tsc -skipLibCheck && node esbuild.config.mjs production && npm pack
node:internal/modules/esm/resolve:205
const resolvedOption = FSLegacyMainResolve(packageJsonUrlString, packageConfig.main, baseStringified);
^
TypeError: The URL must be of scheme file:
at legacyMainResolve (node:internal/modules/esm/resolve:205:26)
at packageResolve (node:internal/modules/esm/resolve:831:14)
at moduleResolve (node:internal/modules/esm/resolve:901:20)
at defaultResolve (node:internal/modules/esm/resolve:1121:11)
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:396:12)
at ModuleLoader.resolve (node:internal/modules/esm/loader:365:25)
at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:240:38)
at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:85:39)
at link (node:internal/modules/esm/module_job:84:36) {
code: 'ERR_INVALID_URL_SCHEME'
}
Node.js v20.10.0
Cleaning up project directory and file based variables 00:01
ERROR: Job failed: exit code 1
再次,这在本地运行得很好,相同版本的 Node.js 等。我已经清除了本地 npm 缓存,删除了 node_modules 等,所有这些都是为了潜在地复制服务器端状态,但在本地仍然一切正常.
当我在 docker 容器(alpine)中使用节点 20.x 时遇到类似的问题。 使用 Node 18.x 就可以了。