在www.example.com上部署@fastify/static时,找不到核心Node.js模块“fs”render.com

h43kikqp  于 2023-02-03  发布在  Node.js
关注(0)|答案(1)|浏览(168)

据我所知,核心模块(如“fs”)是node.js构建的一部分,不需要特殊配置即可导入,因此我不知道在www.example.com上运行时如何会缺少“fs”render.com。我在本地构建或运行开发模式时没有任何问题。该服务在render.com上部署和构建完美,但运行失败,原因如下:

Jan 31 01:13:22 PM  ==> Starting service with 'node index.js'
Jan 31 01:13:23 PM  internal/modules/cjs/loader.js:888
Jan 31 01:13:23 PM    throw err;
Jan 31 01:13:23 PM    ^
Jan 31 01:13:23 PM  
Jan 31 01:13:23 PM  **Error: Cannot find module 'node:fs'**
Jan 31 01:13:23 PM  Require stack:
Jan 31 01:13:23 PM  - /opt/render/project/src/node_modules/@fastify/send/lib/SendStream.js
Jan 31 01:13:23 PM  - /opt/render/project/src/node_modules/@fastify/send/index.js
Jan 31 01:13:23 PM  - /opt/render/project/src/node_modules/@fastify/static/index.js
Jan 31 01:13:23 PM  - /opt/render/project/src/index.js
Jan 31 01:13:23 PM      at Function.Module._resolveFilename (internal/modules/cjs/loader.js:885:15)
Jan 31 01:13:23 PM      at Function.Module._load (internal/modules/cjs/loader.js:730:27)
Jan 31 01:13:23 PM      at Module.require (internal/modules/cjs/loader.js:957:19)
Jan 31 01:13:23 PM      at require (internal/modules/cjs/helpers.js:88:18)
Jan 31 01:13:23 PM      at Object.<anonymous> (/opt/render/project/src/node_modules/@fastify/send/lib/SendStream.js:10:12)
Jan 31 01:13:23 PM      at Module._compile (internal/modules/cjs/loader.js:1068:30)
Jan 31 01:13:23 PM      at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
Jan 31 01:13:23 PM      at Module.load (internal/modules/cjs/loader.js:933:32)
Jan 31 01:13:23 PM      at Function.Module._load (internal/modules/cjs/loader.js:774:14)
Jan 31 01:13:23 PM      at Module.require (internal/modules/cjs/loader.js:957:19) {
Jan 31 01:13:23 PM    code: 'MODULE_NOT_FOUND',
Jan 31 01:13:23 PM    requireStack: [
Jan 31 01:13:23 PM      '/opt/render/project/src/node_modules/@fastify/send/lib/SendStream.js',
Jan 31 01:13:23 PM      '/opt/render/project/src/node_modules/@fastify/send/index.js',
Jan 31 01:13:23 PM      '/opt/render/project/src/node_modules/@fastify/static/index.js',
Jan 31 01:13:23 PM      '/opt/render/project/src/index.js'
Jan 31 01:13:23 PM    ]
Jan 31 01:13:23 PM  }

在我今天部署了一个需要@fastify/static包的新版本之前,这个服务一直运行得很愉快,如下所示:

fastify.register(require('@fastify/static'), { root: path.join(__dirname,'public'), prefix:'/public/' })

我从不直接导入“fs”,但@fastify/static显然会这样做,如下所示:

const statSync = require('fs').statSync

我试着在导入@fastify之前显式导入fs,但是错误没有改变。Webpack没有涉及。我试着使用npm和yarn进行构建,没有区别-构建不应该影响核心模块。是不是有一些关键的环境设置我在www.example.com上忽略了Render.com?

oxf4rvwz

oxf4rvwz1#

Ronnie的评论(thks!)让我开始怀疑我关于“node:fs”和“fs”相同的假设是否正确。事实并非如此。Render.com默认为node.js版本14.17.0。“node:“模块引用语法直到后来的版本才被添加。
解决方案是render.com使用包含版本字符串的环境变量在www.example.com上请求节点版本16.0.0,并修复了错误。
render.com上的https://render.com/docs/node-version提供了指定版本的详细信息
核心模块语法的说明位于https://nodejs.org/api/modules.html

相关问题