Ember项目中无法定位导入的d3-graphviz模块问题求助
d3-graphviz" in Your Ember Project Let's break down the most likely fixes for this import error—since you've confirmed the package is installed via npm list, the issue is almost certainly how Ember is handling the npm module.
1. Use ember-auto-import (Recommended for Modern Ember)
Ember 3.x doesn't automatically expose all npm packages to your app code by default. ember-auto-import simplifies this by handling ES module imports directly:
- Install the addon:
ember install ember-auto-import - Restart your development server (
ember serve)—this plugin needs a fresh build to take effect. - Try your original import statement again:
import { graphviz } from "d3-graphviz";
2. Manually Configure the Package in ember-cli-build.js
If you prefer not to use ember-auto-import, you can manually import the package and set up a shim:
Step 2a: Add the package to your build
Open ember-cli-build.js in your project root, and add this line inside the module.exports function:
app.import('node_modules/d3-graphviz/dist/d3-graphviz.min.js');
Step 2b: Create a shim to expose the module
Create a new file at app/shims/d3-graphviz.js with this content:
// Map the global graphviz object to an ES module export export default window.d3.graphviz;
Step 2c: Update your import statement
Now import from your shim instead:
import graphviz from '../shims/d3-graphviz';
3. Clear Cache & Reinstall Dependencies
Sometimes stale cache or corrupted installs cause module resolution issues:
- Run these commands to reset your dependencies and build cache:
rm -rf node_modules package-lock.json npm install ember clear ember serve
4. Verify the Import Syntax Matches the Package's Export
Double-check how d3-graphviz exports its functionality. For version 4.1.1 (your installed version), the package exposes graphviz as a default ES module export. Try adjusting your import statement to:
import graphviz from "d3-graphviz";
Then use it like:
graphviz("#your-element").renderDot('digraph { A -> B }');
内容的提问来源于stack exchange,提问作者Eric G

