gpt4 book ai didi

javascript - Webpack 无法解析并指向我的 node_modules

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:02 34 4
gpt4 key购买 nike

我按照手册将 Three.js 库作为模块运行时遇到问题 https://threejs.org/docs/#manual/en/introduction/Import-via-modules

这就是我所做的:

创建package.json

npm init

安装 webpack

npm i --save-dev webpack webpack-cli

安装 Three.js

npm install three

使用以下代码创建index.html

<!DOCTYPE html>
<html lang="en">

<head>
<title>three.js webgl - cloth simulation</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<style>
body {
background-color: #cce0ff;
color: #000;
}

a {
color: #080;
}
</style>
</head>

<body>
<script type="module" src="./src/index.js"></script>
</body>

</html>

创建一个 src 文件夹,并将一个名为 index.js 的文件放入我导入三个的 src 文件夹中

import * as THREE from 'three';

安装 liveserver 以运行服务器:

npm install live-server -g

运行服务器:

live-server

这给了我错误:

Uncaught TypeError: Failed to resolve module specifier "three". Relative references must start with either "/", "./", or "../".

但是,使用提供完整路径的语法即可:

import * as THREE from '../node_modules/three/build/three.module.js';

为什么 webpack 无法解析我的 node_modules 的路径?

我还尝试创建一个 webpack.config.js 文件:

module.exports = {
resolve: {
modules: ['./node_modules']
}
};

但结果相同:

Uncaught TypeError: Failed to resolve module specifier "three". Relative references must start with either "/", "./", or "../".

非常感谢任何提示!

更新:

我尝试使用 Babel 来处理 ES6:

安装:

npm install --save-dev @babel/core @babel/preset-env 
npm install --save-dev babel-loader

根据以下内容编辑 y webpack.config.js: https://createapp.dev/webpack

const webpack = require('webpack');
const path = require('path');

const config = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js'
},
module: {
rules: [
{
test: /\.js$/,
use: 'babel-loader',
exclude: /node_modules/
}
]
}
};

module.exports = config;

添加了 .babelrc:

{
"presets": [
"@babel/preset-env"
]
}

但还是没有成功

最佳答案

可以在浏览器中使用带有 ES6 模块和 npm 的 Three.js,无需 webpack 或任何其他 bundle ,方法如下:

npm install three

并打开一个 HTML 页面,并链接到 type="module" 脚本:

  <script type="module" src="./main.js"></script>

main.js 中,您必须按以下格式编写:

import * as THREE from './node_modules/three/src/Three.js';

这会起作用。请注意,导入语句必须采用这种形式,指向文件,并带有 ./.js

关于javascript - Webpack 无法解析并指向我的 node_modules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58581986/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com