Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将webpack设置为通过HTTPS在自定义域上本地运行_Javascript_Localhost_Reactjs_Webpack_Webpack Dev Server - Fatal编程技术网

Javascript 将webpack设置为通过HTTPS在自定义域上本地运行

Javascript 将webpack设置为通过HTTPS在自定义域上本地运行,javascript,localhost,reactjs,webpack,webpack-dev-server,Javascript,Localhost,Reactjs,Webpack,Webpack Dev Server,为了使用我想集成到应用程序中的模块(我在本地开发),我必须做两件事: 1) 使我的应用程序在HTTPS上本地运行。 2) 使用特定域运行应用程序 对于用于本地开发的Webpack dev服务器,这两件事应该都很容易,但由于某些原因,它并没有像文档中所建议的那样工作 我的webpack.config文件是: module.exports = { entry: './app/js/app.js', output: { path:'./app/js/', publicPath:

为了使用我想集成到应用程序中的模块(我在本地开发),我必须做两件事:
1) 使我的应用程序在HTTPS上本地运行。
2) 使用特定域运行应用程序

对于用于本地开发的Webpack dev服务器,这两件事应该都很容易,但由于某些原因,它并没有像文档中所建议的那样工作

我的
webpack.config
文件是:

module.exports = {
  entry: './app/js/app.js',
  output: {
    path:'./app/js/',
    publicPath: 'https://specialurl.com/assets',
    filename:'bundle.js'
 }
我指向的路径已添加到我计算机上的主机文件中,因此它应该与localhost默认值一样有效

我的
package.json
文件将此作为开发服务器的启动脚本:

"scripts": {
"start": "webpack-dev-server --progress --colors --https",
}

我做了这些更改,然后在保存后用npm start重新启动。问题是服务器仍然没有在https上运行,当我将浏览器指向新链接时,它什么也没有显示。我找到的所有文档都让我觉得这应该是可行的,所以我肯定错过了一些明显的东西。

解决了它!正如我预期的那样,使用Webpack非常容易,但是文档有点混乱

您只需编辑主机文件以包含所需的域,然后将以下代码添加到
webpack.config

 devServer: {
  host: "localhost.specialurl.com",
  port: 1234,
  https: true
},

运行
npm start
并将您的浏览器指向,您应该都已设置:)

要使热模块重新加载正常,请将
public
值设置为
undefined
,然后它将使用
host
中的值

environment.config.devServer.public=未定义
environment.config.devServer.host='localhost.example.com'
environment.config.devServer.https={
https:是的,
热:是的,
key:fs.readFileSync(path.resolve('ssl/localhost.example.com.key.pem'),
cert:fs.readFileSync(path.resolve('ssl/localhost.example.com.cert.pem'),
}
这是因为这一行忽略了指定的主机,如果定义了
public

为什么不在webpack前面放一台nginx服务器,设置证书,然后编辑主机文件,将域指向nginx?因为webpack似乎具备了所需的所有功能,所以我希望尽可能简化工作。如果不是这样的话,那么尝试一下似乎是个好主意:)只是说-这对于节点服务器来说非常简单,即使在开发中我也更喜欢它,因为它更具可扩展性和灵活性。如果能与
hot:true
一起使用,真是运气好吗?该应用程序在自定义域上工作,但webpack一直尝试打开与localhost:3000的socket.io连接。您是如何编辑主机文件的
127.0.0.1 localhost.specialur.com
?是的,有必要添加
127.0.0.1 localhost.specialur.com
,若要使其正常工作,您还可以执行
127.0.0.1 localhost localhost.specialur.com
,这样localhost也可以继续工作。将127.0.0.1 localhost localhost.specialur.com添加到我的windows主机文件中可以正常工作。另一种方法是,如果您控制了域,您可以向域中添加一条记录,并将localhost.specialur.com指向IP地址127.0.0.1。例如,如果您ping localhost.huawei.com,则解析为127.0.0.1。