typescript - 找不到模块 '!!raw-loader!./something.glsl' 或其对应的类型声明
问题描述
我有一个使用 create-react-app --template typescript 启动的项目。我需要使用 webpack raw-loader 导入一些文件,所以我做了一个npm i -D raw-loader
. 现在我像这样导入那些:
// eslint-disable-next-line import/no-webpack-loader-syntax
import fSrc from '!!raw-loader!./something.glsl';
我为 .glsl 文件以及!raw-loader!
我的项目添加了声明:
// index.d.ts
declare module '*.svg';
declare module '*.glsl';
declare module '!raw-loader!*';
但是,我得到编译器错误:
Cannot find module '!!raw-loader!./something.glsl' or its corresponding type declarations. TS2307
1 | // eslint-disable-next-line import/no-webpack-loader-syntax
> 2 | import fSrc from '!!raw-loader!./something.glsl';
我在这里做错了什么?
解决方案
根据要求,这就是我所做的对我有用的事情。
在 webpack.config.js 中,使用 raw loader 和glslify-loader来处理任何 .glsl 文件:
module.exports = {
entry: './src/index.tsx',
module: {
rules: [
{
test: /\.(glsl|vs|fs|vert|frag)$/,
exclude: /node_modules/,
use: ['raw-loader', 'glslify-loader'],
},
// ...
],
},
// ...
};
然后我在没有任何特殊语法的情况下导入它们:
// Where I want to use them:
import fSrc from './fragmentShader.fs.glsl';
import vSrc from './vertexShader.vs.glsl';
如果您使用的是 typescript,则需要在 .d.ts 文件中将这些类型的文件声明为模块:
// index.d.ts
declare module '*.svg';
declare module '*.glsl';
declare module '*.fs.svg';
declare module '*.vs.glsl';
推荐阅读
- python-3.x - 想让 Excel 文件标题加粗
- php - 在 Laravel 控制器或模型中自动加载模块或库
- javascript - 获取元素数据属性并将它们插入到按钮中
- c# - 如何提供存储在 FTP 空间中的文件
- php - 尝试使用 PHP 保存 csv 文件需要很长时间
- flutter - 当使用flutter web部署的页面没有打开文件上传时
- azure-functions - 如何使用 Azure 数据工厂生成动态批处理文件并执行它
- css - 意外
垂直滚动条时出现线条(当高度超过 100% 时) - reactjs - 为什么反应重新渲染另一个变量?
- dataframe - 在一列中重新组织数据集