我创建了 react-app,还安装了 sequelize 和 pg。但是当我执行 npm start 时,出现以下错误 -
./node_modules/pg/lib/connection-parameters.js
未找到模块:无法解析“/Users/vedant/Web Dev/device_psql/node_modules/pg/lib”中的“dns”
这是 App.js 文件 -
import React, { Component } from 'react';
const Sequelize = require('sequelize');
const sequelize = new Sequelize('postgres', 'postgres', 'password', {
host: 'localhost',
dialect: 'postgres',
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
},
// http://docs.sequelizejs.com/manual/tutorial/querying.html#operators
operatorsAliases: false
});
class App extends Component {
render() {
return (
<div >
<p>Test</p>
</div>
);
}
}
export default App;
此外,在 package.json 文件中,我有 sequelize 和 pg。可能是什么问题呢?我尝试删除 node_modules 文件夹并执行 npm install,但没有成功。
提前致谢。
最佳答案
发生这种情况是因为您的一个包使用了 JavaScript promises,它依赖于 dns
模块,该模块仅在 Node.js(服务器端)中可用,当您的代码在浏览器。虽然实现依赖于它,但它不需要它工作,因此您可以通过伪造 dns
模块的存在来解决问题。
为此,请按照下列步骤操作:
创建一个文件夹/src/mock/dns
。在此文件夹中,创建一个文件 index.js
包含:
module.exports = {};
module.exports.default = {};
同样在此文件夹中,创建一个文件 package.json
包含:
{
"name": "dns",
"version": "3.1.0",
"private": true
}
在您的根 package.json
中,将以下行添加到 dependencies
:
"dns": "file:./src/mock/dns"
运行 npm install
来安装假的依赖项,然后使用 npm start
重启你的 React 项目。
关于node.js - 找不到模块 : Can't resolve 'dns' in pg/lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51541561/